应用程序停止后,GCM无法查看通知内容

时间:2013-05-16 18:07:24

标签: android android-notifications google-cloud-messaging

我的应用程序带有一个文本框,显示我通过测试服务器发出的通知内容。当应用程序位于前台或后台时(当我按下主页键时),该应用程序正常工作。

我点击通知后,我正在使用的GCM演示代码将应用程序重新聚焦并正确填写文本框。

当我按后退键或从菜单中退出应用程序时,我仍然可以收到通知。但是,当我点击通知时,应用程序会打开,文本框仍为空白。

我知道停止应用程序会导致onDestroy()方法基本上杀死所有内容。我的所有处理程序等都已消失。那么在应用程序停止后如何查看通知内容呢?

来自GCMIntentService.java(这是样板代码,这里没有任何改变):

 /**
 * Issues a notification to inform the user that server has sent a message.
 */
@SuppressWarnings("deprecation")
private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_stat_gcm;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);
    String title = context.getString(R.string.app_name);
    Intent notificationIntent = new Intent(context, DemoActivity.class);
    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent =
            PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notificationManager.notify(0, notification);
}

我设置文本框的处理程序(这是在MainActivity中):

    private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
        mDisplay.append(newMessage + "\n");
        String regid = intent.getExtras().getString("regid");
        regIdTxt.setText(regid);
    }
};

我的清单如果没问题,因为我可以注册,取消注册和接收消息。

0 个答案:

没有答案