我的应用程序带有一个文本框,显示我通过测试服务器发出的通知内容。当应用程序位于前台或后台时(当我按下主页键时),该应用程序正常工作。
我点击通知后,我正在使用的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);
}
};
我的清单如果没问题,因为我可以注册,取消注册和接收消息。