我在使用AsyncTask
时遇到了问题。有时doInBackground()
方法不会在onPreExecute()
方法之后被调用。
我知道这个问题已经被问过几次,但是给出的答案对我无效。
以下是我的部分代码:
AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>(){
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.e("AsyncTask", "onPreExecute");
}
@Override
protected Void doInBackground(Void... params) {
Log.e("AsyncTask", "doInBackground");
return null;
}
protected void onPostExecute(Void result) {
Log.e("AsyncTask", "onPostExecute");
};
};
if(Build.VERSION.SDK_INT >= 11)
asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
asyncTask.execute();
正如你所看到的,我检查Android版本是否>= HoneyComb,并在它为真时在池执行器中执行任务。尽管有这个“技巧”,有时仍然不会调用doInBackground()
。
有人遇到相同的问题或知道问题出在哪里吗?
谢谢