在Service中使用Toast

来源:互联网 发布:升级数据 日月 编辑:程序博客网 时间:2024/05/17 04:56

原文地址:http://whatandroid.blog.51cto.com/2172732/844929


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

0 0
原创粉丝点击