这是我的第一个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。事实上,事情有点复杂,但它使活动的界面保持干净,并且易于用于任何异步任务。