0

Android プラットフォームで GCM を使用してプッシュ通知をセットアップしようとしています。

GCMIntentService 内でこれを行うと、次のようになります。

@Override
protected void onMessage(Context context, Intent intent) {
     Toast.makeText(context,intent.getStringExtra("message"), Toast.LENGTH_LONG).show();
}

次のエラーが表示されます。sending message to a Handler on a dead pool

しかし、メインのインテント内の任意の場所で同じ行を実行すると、問題なく動作します。

「Class.forName("android.os.AsyncTask");」を追加するというGoogleで見つかった修正を追加してみました メインインテント内の onCreate メソッドに。しかし、それは役に立ちません。

GCMIntentService からのメッセージをメイン アクティビティにオフロードし、そこから単に Toast を呼び出すことは可能ですか?

4

2 に答える 2

3

これにはハンドラーを使用する必要があります。コードは次のとおりです。

private void handleMessage( Intent intent )
{
    final String message = intent.getExtras().getString("message");

  Thread t = new Thread()
    {

        public void run()
        {

            Message myMessage = new Message();
            Bundle resBundle = new Bundle();
            resBundle.putString( "message", message );
            myMessage.setData( resBundle );
            handler.sendMessage( myMessage );
        }
    };
    t.start();
 }

private Handler handler = new Handler()
{

      public void handleMessage( Message msg )
            {

             Toast.makeText( getBaseContext(), msg.getData().getString( "message" ), Toast.LENGTH_LONG ).show();
            }
};

このコードは、メッセージを処理する GCM サービスに実装する必要があります。

于 2012-09-10T21:18:58.863 に答える
0

コンテキストをToast.makeText(context, ...)に変更するのはどうgetApplicationContext()ですか?

于 2012-08-21T19:58:43.637 に答える