我想从我的处理程序(从服务)接收消息,并将文本设置为 UI 中的 editext
。我使用服务内的处理程序将消息从后台线程发送到主线程。我在后台线程中创建了一个处理程序,在主线程中(在构造函数中)创建了一个处理程序。现在我想将此消息发送到我的 MainActivity
并更新 UI。我有以下代码。
MyService.java
public class myLocalThread extends Thread {
@SuppressLint("HandlerLeak")
myLocalThread() throws IOException {
mhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG:
DeviceMessageStatus statusObject = (DeviceMessageStatus) msg.obj;
statusClass = statusObject.getClass();
try {
statusField = statusClass.getField("screening_information");
statusFieldValue = statusField.get(statusObject);
Log.i("TAG", "Message OBJECT :" + statusFieldValue);
}
};
}
}
我将消息从后台线程转发到主线程,但在服务内部。如何更新 MainActivity
中的 UI。我应该创建另一个处理程序吗?这是我所做的
MainActivity.java
Object statusFieldValue;
onCreate(Bundle savedInstanceState){
number = (EditText) findViewById(R.id.dialpad);
number.setText((Integer) statusFieldValue);
Log.i("RL_RX", "onCreate: " + statusFieldValue);
}
这会引发 nullPointerError
Activity 无法启动。如何检索 UI 线程的消息队列中的消息。我在这里缺少什么?
最佳答案
你声明了一个名为“mhandler”的处理程序,但是在mhandler中,你仍然使用mhandler来发送消息,这是一个无限循环???
关于java - 通过接收来自处理程序的消息来更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57356316/