子线程常见异常
来源:互联网 发布:虐杀原形隐藏boss 知乎 编辑:程序博客网 时间:2024/05/29 14:37
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
谁创建的view谁才可以修改view里面的内容
android系统约定了一个规则:默认只有主线程才可以修改应用程序的ui,子线程不可以(更新ui),否则抛出异常
谁创建的view谁才可以修改view里面的内容
android系统约定了一个规则:默认只有主线程才可以修改应用程序的ui,子线程不可以(更新ui),否则抛出异常
>展示图片、吐司
子线程更新ui的步骤
1. 创建一个消息处理器Handler(一定要在主线程new出来)
private Handler handler = new Handler() {};
2. 在子线程利用handler发送消息给主线程的消息队列
handler.sendMessage(msg);
3. 在主线程的消息处理器里面,处理这个消息
public void handleMessage(Message msg) {}
4. 特殊情况 传递数据
Message.obj 携带数据
public class MainActivity extends Activity {private TextView tv;/** * 1.创建一个消息处理器,运行在主线程里面. */private Handler handler = new Handler() {// 3.loop调用的用来处理消息的方法,运行在主线程public void handleMessage(Message msg) {int i = (Integer) msg.obj;tv.setText("当前进度:"+i+"%");};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.tv);}public void click(View view) {new Thread() {public void run() {// tv.setText("hahahah"); 子线程不可以直接更新ui// 2.子线程 通过消息处理器 把一个消息发送到消息队列(message queue),消息队列中有looper轮询,处理消息for (int i = 0; i < 100; i++) {Message msg = new Message();//消息携带的数据msg.obj = i;handler.sendMessage(msg);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}};}.start();}}
阅读全文
0 0
- 子线程常见异常
- 如何捕获子线程异常
- 子线程修改UI异常
- 捕获子线程异常 vb.net c#
- 子线程更新界面抛异常CalledFromWrongThreadException
- python 主线程捕获子线程异常
- Java子线程中的异常处理
- 多线程程序处理子线程异常 javaExceptionHandler机制
- java多线程编程之捕获子线程异常示例
- 子线程中却抛出异常:android.view.ViewRootImpl$CalledFromWrongThreadException
- EventBus抛异常了,不能在子线程更新UI。
- java多线程编程之捕获子线程异常示例
- Java多线程之捕获子线程中的异常
- 子线程中调用UpdateData(TRUE/FALSE)出现异常解决方法
- 常见异常
- 常见异常
- 常见异常
- 常见异常
- The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .cl
- appendChild、removeChild、insertBefore、createElement、cloneNode的区别;
- CRC校验
- 大数字相加
- 11、react之 实现数据的简单双向绑定
- 子线程常见异常
- 【C#】方法
- swoole创建异步客户端
- 两栈共享空间
- 软件工程(C编码实践篇)学习总结
- C++迭代器 iterator
- JAVA动态代理
- ETL工具之Kettle的简单使用一
- Kafka中topic的Partition,Kafka为什么这么快,Consumer的负载均衡及consumerGroup的概念(来自学习笔记)