一般如果不是在主线程中又开启了新线程的话,一般都会碰到这个问题。
原因是在创建新线程的时候默认情况下不会去创建新的 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();    
                         }    
                });
        }
}