【问题标题】:AsyncTask- how to funnel an async call with no result callbackAsyncTask - 如何在没有结果回调的情况下汇集异步调用
【发布时间】: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


    【解决方案1】:

    如果您想在 bar 线程停止时处于 UI 线程上,请在 onPostExecute() 中实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2018-03-11
      相关资源
      最近更新 更多