【发布时间】:2015-01-22 23:42:31
【问题描述】:
下面的活动有 2 个并行运行的异步任务。 问题是:当'bar' AsyncTask 运行时,活动成员调用其方法 myExec.startSomething() 并在后台运行。它根据成功或失败触发回调,监听器方法在活动类中实现。我如何将侦听器回调结果集中到活动类,因为它在单独的线程中运行? 例如:调用 listener.onFail() 而不是 onSomething()。我在活动中拥有所有侦听器方法。我需要沿着回调汇集。
谢谢 ~
public class MyExecutor {
public void startSomething() {
listener.doSomething();
}
}
public class MyActivity extends Activity implements FooListener {
private MyExecutor myExec;
@Override
protected void onCreate(Bundle savedInstanceState) {
myExec = mApp.getProvisionExecutor();
myExec.addListener(this);
...
}
@Override
protected void onResume() {
super.onResume();
if (myExec.isSomethingorOther() ) {
(bar = new AsyncTask<Void, String, String>() {
@Override
protected String doInBackground(Void... params) {
myExec.startSomething(null);
---->>>>>//startSomething triggers onSomething callback
------>>> in myExecutor class
return null;
}
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
}
if (!foobar && isReady()) {
(new AsyncTask<Void, String, String>() {
@Override
protected String doInBackground(Void... params) {
return SomethingGood());
}
protected void onPostExecute(String result) {
if (null != result) {
poncho.setColor(result);
}
...
}
}).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
}
//listener methods
@Override
public void onSomething() {
//am I reached this way or do I need to pass back a callback result
doSomethingGreat();
}
....
private void doSomethingGreat() {
//
}
...
}
【问题讨论】:
标签: java android multithreading android-asynctask