Android中切换到主线程执行的方法
作者:lebronzhen 时间:2023-08-19 07:02:28
方法一: view.post(Runnable runnable)
使用 view 对象,调用 post 方法即可在主线程中执行里边的代码,postDelayed 是延时执行,也可以达到相同的效果。例如:
textView.post(new Runnable() {
@Override
public void run() {
textView.setText("更新textView");
}
});
方法二:runOnUiThread(Runnable runnable)
在 Acitivity 中直接调用 runOnUiThread 或者将 Activity 的 context 对象传入子线程调用。例如:
runOnUiThread(new Runnable() {
public void run() {
textView.setText("更新textView");
}
}
方法三:handler.post(Runnable runnable)
如果是在主线程可以直接 new 一个 Handler 对象,如果是在子线程需要获取主线程的 Looper 和 Queue
// 主线程
Handler handler = new Handler();
// 子线程
Handler handler = new Handler(Looper.getMainLooper());
然后调用 post 方法,或者 postAtTime、postAtDelayed 即可。例如:
handler.post(new Runnable() {
@Override
public void run() {
textView.setText("更新textView");
}
});
方法四:handler.sendMessage(Message message)
这个是比较常用的方法通过 sendMessage 发送消息,然后在 handleMessage 中进行处理。例如:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 处理消息
textView.setText("更新textView" + msg);
switch(msg.what) {
case 0:
// 处理指定消息
break;
}
}
};
handler.sendEmptyMessage(0);
方法五:使用 AsynTask
AsyncTask asyncTask = new AsyncTask() {
@Override
protected Object doInBackground(Object[] objects) {
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
}
};
doInBackground 方法执行是在子线程中,其返回结果会传递到 onPostExecute 方法中,onPostExecute 就是运行在主线程。
来源:https://juejin.cn/post/6934250830342291469
标签:Android,主线程,执行
0
投稿
猜你喜欢
Java通俗易懂系列设计模式之建造者模式
2022-11-01 23:27:24
Java实现简单通讯录管理系统
2022-06-28 01:15:54
Intellij搭建springmvc常见问题解决方案
2023-07-23 12:53:29
C++普通函数指针与成员函数指针实例解析
2022-09-29 10:19:36
springmvc前台向后台传值几种方式总结(从简单到复杂)
2023-04-13 22:20:50
解决Feign获取异常信息的处理方案
2023-12-11 13:17:54
Android实时文件夹创建方法
2023-11-30 03:13:42
Android 7.0新特性详解
2022-10-10 07:11:56
Java super关键字的使用详解
2021-11-30 13:40:43
Spring mvc如何实现数据处理
2023-06-20 09:36:35
java 保留两位小数的几种方法
2022-05-11 16:38:27
Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理
2023-07-01 22:19:29
Android实现多个连续带数字圆圈效果
2021-09-10 02:46:23
Android自定义View实现垂直时间轴布局
2022-12-12 15:21:16
图文详解Java中的序列化机制
2021-06-15 12:11:49
Spring之IOC详解
2022-10-13 19:10:24
Java杂谈之重复代码是什么
2022-06-08 15:07:24
DUBBO 日志过滤器,输出dubbo 接口调用入参、出参等信息(最新推荐)
2023-10-19 22:53:54
Android TimePicker 直接输入的问题解决方案
2023-08-03 03:11:55
Unity中C#和Java的相互调用实例代码
2022-02-28 13:40:53