Android在非UI线程中显示Toast
来源:互联网 发布:内部类 java 编辑:程序博客网 时间:2024/05/23 19:45
public void showToast(String msg){Looper.prepare();Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();Looper.loop();}
只需要加上那两句就能在非UI线程中显示Toast
Toast里面的show() public void show() { ... service.enqueueToast(pkg, tn, mDuration); //把这个toast插入到一个队列里面 ... }
Looperpublic static final void prepare() { if (sThreadLocal.get() != null) { throw new RuntimeException("Only one Looper may be created per thread"); } sThreadLocal.set(new Looper()); //在当前线程中创建一个Looper }private Looper() { mQueue = new MessageQueue(); //关键在这,创建Looper都干了什么。 其实是创建了消息队列 mRun = true; mThread = Thread.currentThread(); }
总结下:Toast 显示的必要条件:
1:Toast 显示需要出现在一个线程的消息队列中.... 很隐蔽
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- Android在非UI线程中显示Toast
- 在非UI线程中显示Toast
- 非UI线程中显示Toast
- 在非UI线程中使用Toast
- 非UI线程中Toast
- Toast在非UI主线程的其他线程中显示报错
- 非UI线程中显示Alertdialog控件或Toast
- Android在所有代码中使用Toast,包括非UI线程
- android非UI线程调用Toast
- Android Toast工具类 解决Toast重复显示,Toast一直显示,在线程中可用
- Android Activity的setTitle,AlertDialog,Toast操作是否都必须在非主UI线程中操作呢?
- UDP组播
- POJ 2305
- 十月活动之第一次见面会
- 如何设置 WampServer 5 集成环境
- 指针常量和常量指针
- Android在非UI线程中显示Toast
- bit(位)、byte(字节)、字符、英文字母、中文
- Mysql优化、索引
- 选择linux系统,为什么我选择CentOS而不是Debian/Ubuntu
- 用命令安装kext驱动
- Eclipse下安装GEF和AmaterasUML
- 好习惯(公司领导分享到群里的)
- 关于腾讯社区开放平台
- 六款SQLite管理工具介绍