Tôi muốn tạo trước một Toast
khi tác vụ nền được hoàn thành, chỉ để cho người dùng biết rằng nó đã hoàn tất.Làm cách nào để chuyển một ngữ cảnh tới AsyncTask?
Tôi đã tạo một lớp mới cho asyncTask của mình nhưng tôi không thể sử dụng getApplicationContext()
trong lớp này.
Tôi đang sử dụng task.execute(getTempFile(this), getApplicationContext());
để chạy các tác vụ. getTempFile trả về một đối tượng File, và tôi đã cố gắng chuyển ngữ cảnh như một đối tượng Context.
Lớp Nhiệm vụ của tôi có 3 biến AsyncTask<Object, Integer, Integer>
để ngữ cảnh nằm trong đối tượng thứ hai. Tuy nhiên, điều này làm hỏng ứng dụng.
Sửa
public class LocationActivity extends Activity implements LocationListener {
protected void handleImage(Bitmap thumbnail){
PushDataToServer task = new PushDataToServer();
task.execute(getTempFile(this), getApplicationContext());
}
}
public class PushDataToServer extends AsyncTask<Object, Integer, Integer> {
Context context;
@Override
protected Integer doInBackground(Object... params) {
// TODO Auto-generated method stub
this.context = (Context) params[1];
File file = (File) params[0];
return null;
}
protected void onPostExecute(String result) {
Toast toast = Toast.makeText(this.context, "All done!", Toast.LENGTH_SHORT);
toast.show();
}
}
Xin vui lòng gửi lớp AsyncTask của bạn và bộ xương của lớp học chính của bạn :) – Codeman
Đã cập nhật câu hỏi của tôi với mẫu mã. – dotty