我有一个FragmentActivity,其中包含一个项目列表。当应用程序在后台运行时,可能会向该项目列表推送新的内容。
当发生这种情况时,我希望创建一个状态栏通知并提醒用户更新。
当用户点击通知时,活动应重新排序到前面,并在屏幕上显示,同时在列表底部显示新项目。
因此,我编写了一个通知管理器,在用户设备上展示这个功能:
private static void createNotification(String title, String text,
String largeIcon, String itemdId, Context mCOntext) {
Bitmap ic = BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.ic_launcher);
Intent intent = new Intent(mContext, MyFragmentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra(MyFragmentActivity.SELECTED_ITEM_LIST_ID, DatabaseHelper
.getItemListById(listId).getId());
PendingIntent pIntent = PendingIntent.getActivity(mContext, 0, intent,
0);
Notification noti = new NotificationCompat.Builder(mContext)
.setContentTitle(title).setContentText(text)
.setSmallIcon(R.drawable.ic_launcher).setContentIntent(pIntent)
.setAutoCancel(true).setLargeIcon(ic).build();
noti.defaults |= Notification.DEFAULT_LIGHTS;
noti.defaults |= Notification.DEFAULT_VIBRATE;
noti.sound = Uri.parse("android.resource://"
+ mContext.getPackageName() + "/" + R.raw.user_gets_message);
NotificationManager nm = (NotificationManager) mContext
.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(0, noti);
}
唯一的问题是,当我导航到片段活动并转到我的主屏幕(使应用程序处于后台)并获得推送时,它似乎忽略了我的标志。当我单击通知时,应用程序会创建一个新的Activity(或片段)并显示新的数据,而不是原始的数据。(这意味着单击返回按钮会打开历史堆栈中相同的Activity(或片段))。
我重写了onNewIntent和所有活动的生命周期方法,发现在点击返回时,调用的方法是MyFragmentActivity.onStart和MyFragmentActivity.onResume。
您认为我做错了什么?