zoukankan      html  css  js  c++  java
  • Android在非UI线程中显示Toast

    1. public void showToast(String msg){  
    2.         Looper.prepare();  
    3.         Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();  
    4.         Looper.loop();  
    5.     }  
    public void showToast(String msg){
    		Looper.prepare();
    		Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
    		Looper.loop();
    	}

    只需要加上那两句就能在非UI线程中显示Toast

    1. Toast里面的show()  
    2.     public void show() {  
    3.       ...  
    4.         service.enqueueToast(pkg, tn, mDuration);   //把这个toast插入到一个队列里面   
    5.         ...  
    6.     }  
    Toast里面的show()
        public void show() {
          ...
            service.enqueueToast(pkg, tn, mDuration);   //把这个toast插入到一个队列里面
            ...
        }
    1. Looper  
    2. public static final void prepare() {  
    3.         if (sThreadLocal.get() != null) {  
    4.             throw new RuntimeException("Only one Looper may be created per thread");  
    5.         }  
    6.        sThreadLocal.set(new Looper());  //在当前线程中创建一个Looper   
    7.     }  
    8.   
    9. private Looper() {  
    10.         mQueue = new MessageQueue();  //关键在这,创建Looper都干了什么。 其实是创建了消息队列   
    11.         mRun = true;  
    12.         mThread = Thread.currentThread();  
    13.     }  
    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 显示需要出现在一个线程的消息队列中.... 很隐蔽

    转载于:http://blog.csdn.net/xiaanming/article/details/8904645

  • 相关阅读:
    [翻译]汇编器和加载器简史
    一定要制作一个计划
    基本排序算法(冒泡,快排,插入,希尔,选择,归并)
    用yunio网盘搭建git私有仓库
    git 学习笔记1
    select函数
    axel源码学习(1)——重要流程细节
    axel源码学习(0)——程序逻辑
    Unix网络编程(3)——C/S模型几种情况
    【转】程序员技术练级攻略
  • 原文地址:https://www.cnblogs.com/jita/p/3171530.html
Copyright © 2011-2022 走看看