安卓一个类继承Thread后被调用怎样在Mainactivity里获取他的handler并在子线程通过handler传数据到MainActivity
时间: 2024-04-30 08:17:16 浏览: 93
用handler在两个activity之间传递数据
5星 · 资源好评率100%
可以在安卓类中使用 Handler 类来与主线程通信。在子线程中,获取一个对应于主线程的 Looper 对象,并使用此对象来创建一个 Handler 实例。然后,在子线程中使用 Handler 实例的 sendMessage() 方法来发送消息。以下是一个示例代码:
在子线程中创建 Handler 实例:
```
private Handler handler;
public void run() {
Looper.prepare();
handler = new Handler() {
public void handleMessage(Message msg) {
// 处理消息
}
};
Looper.loop();
}
```
在主线程中获取子线程的 Handler 对象:
```
Thread thread = new MyThread();
thread.start();
Handler handler = new Handler(thread.getLooper());
```
现在,可以使用主线程中的 Handler 对象与子线程通信。例如,可以通过 sendMessage() 方法向子线程发送消息:
```
Message msg = handler.obtainMessage();
msg.what = 1;
msg.obj = "Hello, world!";
handler.sendMessage(msg);
```
在子线程中,可以重写 handleMessage() 方法来处理收到的消息:
```
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
String text = (String) msg.obj;
// 处理收到的文本
break;
default:
// 处理其他消息
break;
}
}
```
注意:在子线程中,必须调用 Looper.prepare() 和 Looper.loop() 方法来创建Looper对象,否则会出现异常。另外,在处理完收到的消息后,必须调用它的 recycle() 方法来清理消息,避免内存泄漏。
阅读全文