0

这是我的第一个 StackOverflow 问题,如果有任何歧义,我深表歉意。

我正在寻找一种从 Android 处理程序接收回调的方法。

例如,如果从 Activity 中调用处理程序,那么从它接收回调的正确方法是什么,比如说要修改该 Activity 内屏幕上的一些文本。

谢谢!-叶夫根尼

public class MyHandler extends Handler{
  @Override
  public void handleMessage (Message msg) {
    //Do something

    // ???send back the result to the called activity???
  }
}

public class MyActivity extends Activity{

  public void callHandler(){
   MyHandler handler = new MyHandler();
   handler.sendEmptyMessage( 0 );
  }

}
4

1 回答 1

0

在这一点上,从您所展示的内容来看,拥有一个 Handler 根本没有什么意义。处理程序是一种附加到创建它的线程的机制,仅用于在同一线程中调度任务,因此如果 callHandler 被另一个线程调用,则处理程序将在调用 callHandler 的任何线程中运行。我发现Android IPC最成功的模型是这样的

public class myActivity extends Activity {
  public Handler mHandler = new Handler()

  public void startAsynchronousTask() {
    // Fill in as necessary, or offload responsibility elsewhere
    new Thread(new Runnable() {
      public void run {
        //Do something in the background
        ...
        updateUI(results)
      }
    }).start();
  }

  public void updateUI(Results results) {
    mHandler.post(new UIUpdater(results));
  }

  private class UIUpdater implements Runnable {
    UIUpdater(Results results) {
      //construct whatever...
    }

    @Override
    public void run() {
      //Update UI
    }
  }
}

简而言之,它的作用是启动一个异步任务......当该任务完成时,它会调用 updateUI。updateUI 将要执行的代码放入 UI 线程中,以便可以修改视图等。这样,就您的异步任务而言,它所要做的就是调用一个方法来更新 UI。实际上,事情要复杂一些,但它可以使您的活动界面保持干净,并且易于用于任何异步任务。

于 2012-03-30T17:10:13.703 回答