0
我正在製作應用程序,當歌曲開始播放時向Web服務器發送更新...我通過asynctask執行Web服務器更新,但有時會跳過一些信息,信息反覆發送。在某些情況下,asyntask保持運行狀態,使之後不執行。主線程運行良好。爲的AsyncTaskAsyncTask在線程中被重複呼叫時無法正常工作
我宣佈這樣的實例在MainActivity
private static AsyncTask<Void, Void, Void> mTask = null;
代碼爲
private class SendingData extends AsyncTask<Void,Void,Void>{
@Override
protected void onPreExecute(){
//some task
}
protected void onPostExecute(Void params){
Log.d("Tesing","After Post");
super.onPostExecute(params);
}
@Override
protected Void doInBackground(Void... arg0) {
sendPost();
return null;
}
}
我呼籲的AsyncTask時在主線程一首新歌的變化。這是一個重複呼叫
if(mTask.getStatus() == AsyncTask.Status.FINISHED){
// My AsyncTask is done and onPostExecute was called
Log.d("AsyncTask Status","Finished");
mTask = new SendingData();
mTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
}else if(mTask.getStatus() == AsyncTask.Status.PENDING){
Log.d("AsyncTask Status","Pending");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
每次遇到或不得不打電話給asynctask時,我應該做一個新的參考嗎?我將如何檢查以前稱爲asynctask的狀態,或者我只是調用一個新的沒有考慮前面的像下面 新的SendingData()。executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); – Saty
這是一個更好的重複任務AsyncTask.SERIAL_EXECUTOR或AsyncTask.THREAD_POOL_EXECUTOR?請解釋我。 – Saty