[英]doInBackground from AsyncTask never called when Service work on background
private class Test extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
Log.d("test", "called1");
}
@Override
protected Void doInBackground(Void... params) {
Log.d("test", "called2");
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Log.d("test", "called3");
}
}
並輸出:
測試:稱為1
為什么在Service在后台運行時永遠不會調用其他方法? 如果服務停止,則所有方法調用並輸出:
測試:稱為1
測試:被叫2
測試:被叫3
我猜您正在android 3.x或更高版本上進行測試,並且您僅受AsyncTask執行方式更改的影響。
這就是我在代碼中始終保持完全並行運行的方式:
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
new Test().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
new Test().execute();
}
在的AsyncTask根本上改變出現在蜂窩(見Android的SDK文檔此節中的“執行命令”),所以在這之前,你啟動它像往常一樣,為HC及以上,使用executeOnExecutor()
如果你不喜歡新的行為(沒有人我認為)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.