【发布时间】:2013-11-27 05:53:17
【问题描述】:
我正在制作一个应用程序,它会在歌曲开始播放时向网络服务器发送更新...我通过 asynctask 进行网络服务器更新,但有时会跳过一些信息并且重复发送一些信息。在某些情况下,asyntask 保持在运行状态,使其不再执行。主线程运行良好。
我在 MainActivity 中声明了这样的实例
private static AsyncTask<Void, Void, Void> mTask = null;
Asynctask 的代码是
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);
}
【问题讨论】:
标签: android multithreading android-asynctask