0
我开发了一个简单的AsyncTask类,它将Handlers作为其参数,同时在doBackground中发送HandlersendEmptyMessage(0),我加载ProgressDialoge加载视图,但由于某种原因,它直到最后才显示执行我的Handler对象内部的东西(换句话说,progressDialogue在最后闪烁)。Android progress dialoge view not showing
这里是我的AsyncTask:
package com.kc.util;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Handler;
import android.util.Log;
public class LoadDialoge extends AsyncTask<Handler, Integer, Void> {
private ProgressDialog progressDialog;
private String TAG = "LoadDialoge";
private Context mContext;
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progressDialog.dismiss();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
showWait();
}
@Override
protected Void doInBackground(Handler... params) {
// TODO Auto-generated method stub
for(Handler mHandler : params){
mHandler.sendEmptyMessage(0);
Log.d(TAG, "handler sending message");
}
return null;
}
private void showWait() {
Log.d(TAG, "showWait");
progressDialog = new ProgressDialog(mContext);
progressDialog.setTitle("Retrieving contact details");
progressDialog.setMessage("Please wait...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
Log.d(TAG, " ");
}
public void setmContext(Context mContext) {
this.mContext = mContext;
}
}
这里是我传递给这个类从一个活动的处理程序:
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Log.d(TAG, "handleMessage");
initialiseOnItemClickListeners();
initialiseOnClickListeners();
initialiseListViewAdapters();
loadDataToDb();
initializeTitles();
initialize();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.abstract_main_menu);
LoadDialoge load = new LoadDialoge();
load.setmContext(this);
load.execute(mHandler);
}
我试着去创建一个通用的异步加载屏幕,在任何工作活动,而不是在每个活动中复制和粘贴上述LoadDialogue AsyncTask(我之前所做的工作正常)。