一般如果不是在主线程中又开启了新线程的话,一般都会碰到这个问题。
原因是在创建新线程的时候默认情况下不会去创建新的 MessageQueue。


总结下:Toast 显示的必要条件:
1:Toast 显示需要出现在一个线程的消息队列中.... 很隐蔽
public class TestService extends    Service {
   private Handler handler;
  @Override
   public IBinder onBind(Intent intent){
     return null;
  }
    
  @Override
   public void onCreate(){
         handler = new Handler(Looper.getMainLooper());                                                
                System.out.println( "service started");
         handler.post( new Runnable() {    
                         @Override    
                         public void run() {    
                                Toast.makeText(getApplicationContext(), "Test",Toast.LENGTH_SHORT).show();    
                         }    
                });
        }
}    

更多相关文章

  1. Android中如何切换到主线程
  2. Android更新Ui线程的四个方法
  3. Android深入浅出系列课程---Lesson12 AFF110525_Android多线程系
  4. android学习笔记之多线程学习
  5. Android AsyncTask两种线程池分析和总结
  6. Android学习笔记:进度条ProgressBar和线程
  7. Android进阶2:线程和线程池(2)—— HandlerThread原理解析
  8. Android Handler ExecutorService(线程池) 缓存模式

随机推荐

  1. Android(安卓)Learning-Application Fund
  2. Android(安卓)NDK下载(r10~r21)
  3. android Media process
  4. vlc for android 官网sample使用
  5. Android(安卓)关闭后台音频播放
  6. Android(安卓)Market 多APK 包支持
  7. 【Android(安卓)Studio】Migrating From
  8. Android(安卓)仿微信TabHost使用方法详解
  9. android中颜色对应的值
  10. Android保存文件到手机