以下活动有两个并行运行的异步任务。 问题是:当'bar'AsyncTask运行时,活动成员调用其方法myExec.startSomething()并在后台运行。它根据成功或失败触发回调,并且侦听器方法在activity类中实现。如何将侦听器回调结果汇集到活动类,因为它在单独的线程中运行? 例如:调用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() {
//
}
...
}
答案 0 :(得分:0)
如果你想在bar线程停止时进入UI线程,请在onPostExecute()中实现它。