gpt4 book ai didi

java - Android Handler.handleMessage() 不会被调用

转载 作者:搜寻专家 更新时间:2023-11-01 08:46:43 26 4
gpt4 key购买 nike

我试图理解这个版本的 Message.obtain() http://developer.android.com/reference/android/os/Message.html#obtain%28android.os.Handler,%20java.lang.Runnable%29

肯定会调用传递给 Message.obtain() 的 Runnable,但未调用定义的 Handler.handleMessage()(在 msg.sendToTarget() 或什至 mHandler.sendMessage(msg) 上)

Handler mHandler;

class MyThread implements Runnable {

@Override
public void run() {
Message msg = Message.obtain(mHandler, new Runnable() {
@Override
public void run() {
System.out.println("This is printed for sure"); // This is printed for sure
}
});

msg.obj = "My message!";

msg.sendToTarget();
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
System.out.println(msg.obj); // This is never printed
}
};

Thread t = new Thread(new MyThread());
t.start();
}

最佳答案

让我们来看看 Message 类中的这个方法:

public Runnable getCallback()

Retrieve callback object that will execute when this message is handled. This object must implement Runnable. This is called by the target Handler that is receiving this Message to dispatch it. If not set, the message will be dispatched to the receiving Handler's handleMessage(Message).

以及您为获取消息

而调用的内容
public static Message obtain (Handler h, Runnable callback)

所以因为你设置的回调 handleMessage(Message) 没有被调用 :-)

关于java - Android Handler.handleMessage() 不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com