0

これは Mark への直接の質問だと思いますが、WakefulIntentService の doWakefulWork メソッド内から Toast 通知を受け取ることはできません。これは onCreate から機能しますが、トースト メッセージ内のインテントを通じて得たデータを使用する必要があります。

OnCreate 内からハンドラーをインスタンス化しようとしましたが、これは何もしていないようです。考えられることはすべて試しました。Toast がメイン スレッドで実行されていないようです。何か助けはありますか?

4

2 に答える 2

0

一般に、ユーザーが周りにいる場合といない場合があるため、が意味をなすWakefulIntentServiceシナリオ向けには設計されていません。Toastさらに、サービスがUIに直接影響を与えることはありません。ユーザーToast周囲にいる場合、ゲーム、ナビゲーション、映画などの途中でユーザーがあなたに感謝しない可能性があるためです。フォアグラウンドアクティビティを更新するか、Notificationそのようなアクティビティがない場合はを表示するようにブロードキャストを注文しました)。

サービスからを使用することが本当に確実な場合Toast、問題は何の関係もないはずです。WakefulIntentService通常の。でも同じ問題が発生しIntentServiceます。このSOの質問Toastには、を使用したサービスのバックグラウンドスレッドからのの使用を示すいくつかの回答があります。これは、実装がどこで間違っているかHandlerを示すのに役立つ場合があります。Handler

于 2012-03-08T15:34:44.697 に答える
0
       private boolean showToast = false;
        ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (showToast) {
             Toast.makeText(this,"YourText",Toast.LENGTH_LONG).show();
             showToast = false;
        }
        }

showToast = true;どこからでもトースト通知を表示するように設定するだけです。

于 2012-03-08T15:31:56.523 に答える