Android在非UI线程中显示Toast
来源:互联网 发布:创建一个数据库sql语句 编辑:程序博客网 时间:2024/06/05 15:51
- 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插入到一个队列里面
- ...
- }
- Looper
- public 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 显示需要出现在一个线程的消息队列中.... 很隐蔽
0 0
- 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线程中操作呢?
- C++变量命名规则
- 游览器及游览器内核
- Java ,从char 和 Character到内存分配
- 关于read与readLine方法的差别,留给初学java的童鞋的,周六会更新详细解析
- [线段树] [树状数组] [Vijos P1512] SuperBrother打鼹鼠 (mole)
- Android在非UI线程中显示Toast
- POJ-2115 C Looooops
- 入驻今日头条
- 抽象类和接口
- 删除重复数据 mssql2008r2
- HTML解析原理
- 设计模式之Iterator(三)
- 利用WebBrowser控件实现百度自动搜索
- 自适应电脑、手机和iPad的网页设计方法