如何在android中强制执行异步任务
我遇到了一个问题,我在另一个Asynctask中调用了一个新的Asynctask,结果是当调用如何在android中强制执行异步任务,android,multithreading,android-asynctask,Android,Multithreading,Android Asynctask,我遇到了一个问题,我在另一个Asynctask中调用了一个新的Asynctask,结果是当调用 第二个异步任务,线程被阻塞,如何强制运行异步任务?谢谢。您可以通过在AsyncTask 1中实现一个接口并向执行该接口的活动添加回调例程来解决此问题。差不多 MyAsyncTask.java public class MyAsyncTask extends AsyncTask<Void, Void, Void> { public interface OnTaskCompleted
第二个异步任务,线程被阻塞,如何强制运行异步任务?谢谢。您可以通过在AsyncTask 1中实现一个接口并向执行该接口的活动添加回调例程来解决此问题。差不多 MyAsyncTask.java
public class MyAsyncTask extends AsyncTask<Void, Void, Void> {
public interface OnTaskCompletedListener {
void onTaskCompleted();
}
private Activity mActivity;
public MyAsyncTask(Activity activity) {
mActivity = activity;
}
public void attach(Activity activity) {
mActivity = activity;
}
public void detach() {
mActivity = null;
}
@Override
protected void onPostExecute(Void nothing) {
if (mActivity != null) mActivity.onTaskCompleted();
}
}
在上面的示例中,包括附加和分离方法,用于处理方向或其他配置更改时的活动重新创建。在AsyncTask中可以省略它,因为它是作为内部类实现的。
主要思想:AsyncTask完成并将执行传递给活动中的回调例程。可以在onTaskCompleted内执行任何操作-再次调用不同或相同的AsyncTask为什么从async启动async?仅在一个AsyncTask中执行。在第一个AsyncTask的onPostExecute中启动下一个AsyncTask。虽然这是非常好的代码,但对OP没有帮助,因为据我所知,他希望在doInBackground中启动其他AsyncTask。
public class MyActivity extends Activity implements MyAsyncTask.OnTaskCompletedListener {
private MyAsyncTask mTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mTask!= null) {
mTask.attach(this);
} else {
mTask = new MyAsyncTask(this).execute();
}
}
@Override
public void onStop() {
if (mTask!= null)) mTask.detach();
super.onStop();
}
@Override
public void onTaskCompleted() {
mTask = null;
// execute another task from here
}
}