上一篇我们说到了Toast的基本应用的代码实现,下面我们来说下它在线程中的使用;
大家都知道和UI显示相关的都应该在UI线程上执行(也就是主线程);
那么如果想监听子线程来显示Toast我们可以用Handler来实现,当子线程执行完后,调用mHandler.sendMessage(msg);来通知主线程执行Toast显示;
在主线程中的代码:
在子线程中的代码 如果有人直接在子线程中去执行Toast那么肯定会报下面的错误
Can’t create handler inside thread that has not calledLooper.prepare();
其实这个报错网上一查就能知道是在非UI线程实现UI显示;
如果不用上面说的Handle,还可以用下面的代码来实现:
- final Thread mThread = new Thread(new Runnable() {
- @Override
- public void run()
- {
- Looper.prepare();
- Toast.makeText(getApplicationContext(), "显示toast",
- Toast.LENGTH_SHORT).show();
- Looper.loop();
- }
- });
- mThread.start();
本文介绍了如何在Android子线程中正确显示Toast消息。通过使用Handler机制或Looper.prepare()方法,可以实现在非UI线程中更新UI,避免了因尝试直接在子线程中调用UI组件而引发的错误。
364

被折叠的 条评论
为什么被折叠?



