Vấn đề rất có thể là bạn đang chạy màn hình giật gân (một số loại Hộp thoại chẳng hạn như ProgressDialog mà tôi giả định) trong cùng một chủ đề với tất cả công việc đang được thực hiện. Điều này sẽ giữ cho chế độ xem của màn hình giật gân không được cập nhật, điều này có thể khiến nó không được hiển thị trên màn hình. Bạn cần hiển thị màn hình giật gân, khởi động một phiên bản của AsyncTask để tải xuống tất cả dữ liệu của bạn, sau đó ẩn màn hình giật gân khi nhiệm vụ hoàn tất.
Vì vậy, phương thức onCreate () trong Activity của bạn chỉ cần tạo một ProgressDialog và hiển thị nó. Sau đó, tạo AsyncTask và khởi động nó. Tôi sẽ đặt AsyncTask trở thành lớp bên trong của Activity chính của bạn, để nó có thể lưu trữ dữ liệu mà nó đã tải xuống vào một số biến trong Activity của bạn và đóng ProgressDialog trong phương thức onPostExecute () của nó.
Không chắc chắn làm thế nào để xây dựng thêm nữa mà không chỉ hiển thị mã, vì vậy đây là:
public class MyActivity extends Activity {
private ProgressDialog pd = null;
private Object data = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
new DownloadTask().execute("Any parameters my download task needs here");
}
private class DownloadTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... args) {
Log.i("MyApp", "Background thread starting");
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
Rõ ràng là có một số phần bạn cần điền vào đó, nhưng mã này sẽ chạy và cung cấp cho bạn điểm khởi đầu tốt (tha thứ cho tôi nếu có lỗi mã, tôi không có quyền truy cập vào Android SDK khi tôi đang nhập mã này hiện tại).
Bạn có thể tìm thấy một số bài đọc hay hơn về chủ đề AsyncTasks trong Android tại đây và tại đây .