25

IntentServiceにトーストメッセージを表示させようとしていますが、onHandleIntentメッセージから送信すると、トーストは表示されますが、スタックして画面が表示されたままになりません。onHandleIntentメソッドがメインサービススレッドで発生しないためだと思いますが、どうすれば移動できますか?

誰かがこの問題を抱えて解決しましたか?

4

3 に答える 3

34

aをonCreate()初期化しHandler、スレッドから投稿します。

private class DisplayToast implements Runnable{
  String mText;

  public DisplayToast(String text){
    mText = text;
  }

  public void run(){
     Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show();
  }
}
protected void onHandleIntent(Intent intent){
    ...
  mHandler.post(new DisplayToast("did something")); 
}
于 2010-10-17T23:44:47.297 に答える
3

ハンドルを使用して、操作内容の Runnable を投稿します

protected void onHandleIntent(Intent intent){
    Handler handler=new Handler(Looper.getMainLooper());
    handler.post(new Runnable(){
    public void run(){ 
        //your operation...
        Toast.makeText(getApplicationContext(), "hello world", Toast.LENGTH_SHORT).show();
    }  
}); 
于 2015-02-04T09:42:51.303 に答える