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

但是当我在我的主要意图中的任何地方运行同一行时,它工作得很好。

我尝试添加在 google 上找到的添加“Class.forName("android.os.AsyncTask");”的修复程序 到我的主要意图中的 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, ...)togetApplicationContext()怎么样?

于 2012-08-21T19:58:43.637 回答