正在寻找一种从Android处理程序中进行回调的方法



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

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

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

谢谢!-叶夫根尼

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 );
  }
}

在这一点上,从您所展示的内容来看,拥有一个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。事实上,事情有点复杂,但它使活动的界面保持干净,并且易于用于任何异步任务。

相关内容

最新更新