如何使用处理程序接收消息?

时间:2014-07-14 20:32:02

标签: android

我尝试了很多方法来使用处理程序在后台线程上接收消息,但我还没有成功。

有没有确定的火灾方法来测试这个?是否有一个示例代码可以用来查看它是如何完成的?

2 个答案:

答案 0 :(得分:2)

是的,请尝试@FoamyGuy the answer。在示例代码中,他发回了一条空消息。我正在扩展他的代码以传递字符串。如果你想将一些消息发送回处理程序(例如:string),你可以发送一些字符串或其他东西,如下所示:

Handler h = new Handler(){
    @Override
    public void handleMessage(Message msg){
        if(msg.what == 1){
           //Success
           String msg = (String)msg.obj;
           Log.d("", "Msg is:"+msg);
        }else{
           //Failure
           String msg = (String)msg.obj;
           Log.d("", "Msg is:"+msg);    
        }
    }
};

Thread t = new Thread() {
    @Override
    public void run(){
        doSomeWork();
        if(succeed){
            //we can't update the UI from here so we'll signal our handler. and it will do it for us.
               Message m = h.obtainMessage(1, "Success message string");
               m.sendToTarget();
        }else{
               Message m = h.obtainMessage(0, "Your Failed!");
               m.sendToTarget();
        }
    }   
}

答案 1 :(得分:0)

在非UI线程上?您需要做的就是在该线程上创建一个Looper,然后在其上创建处理程序。这将自动导致Handler与该Looper关联。然后运行Looper.loop

所以

Looper.prepare();
Handler myHandler = new Handler();
Looper.loop()

和myHandler将在线程上。