android 从子线程回到主线程 handle,请给出示例代码
时间: 2024-09-14 19:06:05 浏览: 36
Visual C++源代码 22 如何从子线程更新主线程数据
5星 · 资源好评率100%
在Android中,为了保持UI线程的响应性和避免ANR(应用程序无响应),我们通常会在子线程中执行耗时操作,然后通过Handler在主线程更新界面。以下是创建一个简单的示例:
```java
// 创建一个内部类 Handler,用于将消息传递回主线程
Handler uiHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
// 这里是你需要更新UI的部分
switch (msg.what) {
case UPDATE_UI:
// 更新TextView或其他UI组件
textView.setText("处理完成");
break;
}
}
};
// 在子线程中执行任务并发送消息到主线程
new Thread(new Runnable() {
@Override
public void run() {
try {
// 模拟耗时操作
Thread.sleep(2000);
// 使用 sendMessage 来发送一条消息,携带特定标记UPDATE_UI
Message message = new Message();
message.what = UPDATE_UI; // 假设这是一个你想在主线程执行的操作标识
uiHandler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
```
在这个例子中,当子线程的任务完成后,会通过`uiHandler`发送一个带有`UPDATE_UI`标识的消息,主线程的`handleMessage`方法收到这个消息后,会在适当的UI回调中更新相应的UI元素。
阅读全文