gpt4 book ai didi

android - Looper 处理程序示例

转载 作者:行者123 更新时间:2023-11-30 00:12:33 25 4
gpt4 key购买 nike

我试图理解 android 中的循环器和处理程序,但被编写的示例卡住了。我想做的是,向线程添加一个循环程序,使线程在 run() 方法中连续运行。然后将消息或 runnables 发布到 hanlder 线程。

public class HLClass extends Thread {
Handler mHandler;
@Override
public void run() {
super.run();
Looper.prepare();
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("HLClass","In Handler, Msg = "+msg.arg1);
}
};
Looper.loop();
}
}

这就是我尝试调用处理程序的方式:

HLClass hlc = new HLClass();
hlc.start();
Message m = hlc.mHandler.obtainMessage();
m.arg1 = 10;
hlc.mHandler.sendMessage(m);

错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Message android.os.Handler.obtainMessage()' 在空对象引用上

在这里,我真正想了解的是,我如何将处理程序附加到线程,然后从任何其他线程发布消息如何安全地将 Message 或 Runnable 发布到处理程序而不会出错。

最佳答案

您可以尝试使用以下代码发送消息。

final HLClass hlc = new HLClass();
hlc.start();
new Handler().postDelayed(new Runnable() {
public void run() {
Message m = hlc.mHandler.obtainMessage();
m.arg1 = 10;
hlc.mHandler.sendMessage(m);
}
}, 300);

关于android - Looper 处理程序示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931004/

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