关于Android在非UI线程更新UI的问题。
16lz
2022-01-11
为了解决在Android非UI线程更新UI这个问题,Android提供了一些方法,从其他线程访问UI线程。
- Activity.runOnUiThread(Runnable)
- View.post(Runnable)
- View.postDelayed(Runnable, long)
- Looper的方式。
- 使用Handler的方式。
// 1. 使用runOnUiThread的方式runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show(); }});// 2. 使用post的方式btn.post(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show(); }});// 3. 使用postDelayed的方式btn.postDelayed(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show(); }}, 1000);// 4. 使用Looper的方式Looper.prepare();Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show();Looper.loop();// 5. 使用Handler的方式private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show(); break; } }};// 发送消息handler.sendEmptyMessage(1);或者Handler handler = new Handler(Looper.getMainLooper());handler.post(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "sdf", Toast.LENGTH_SHORT).show(); }});
更多相关文章
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerT
- android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
- Android(安卓)UI学习 - Tab的学习和使用
- Android中Context详解
- 待续
- 使用maven构建基于spring、springMVC的简单Android登陆——Andro
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用