当我处理在C2DM消息到达移动设备时从BroadcastReceiver创建的通知时,我的android应用程序遇到了奇怪的行为。我正在执行以体验此行为的流程如下:
使用以下代码从通知中启动BookingOfferActivity:
Intent notificationIntent = new Intent(context, BookingOfferActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle b = new Bundle();
b.putSerializable("booking", booking);
notificationIntent.putExtras(b);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
notification.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(AppUtil.getNextPushIndexBooking(), notification);
BookingOfferActivity在AndroidManifest中以这种方式定义:
<activity android:name=".activity.BookingOfferActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
我的DashboardActivity定义如下:
<activity android:name=".activity.DashboardActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden|adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我称之为奇怪行为的原因是,我想在用户启动或重新启动应用程序时启动DashboardActivity,而不是通知项目。因此,关闭,完成或销毁BookingOfferActivity并通过访问最近打开的应用程序(长按主页按钮)或访问应用程序列表上的启动器图标来重新打开应用程序后,我希望看到仪表板。
我创建了一个与此相似的问题,但我没有提供太多细节,所以我关闭了另一个并用更多数据打开了这个。
非常感谢有关如何解决此问题的任何指导
Ť
答案 0 :(得分:0)
我不确定,但我认为在您的场景中,第二个活动只是进入活动堆栈的顶部,并将显示直到应用程序不会被杀死。我们有大致相同的问题并且以简单的方式解决它:通知开始主要(第一)活动与额外“立即去第二”。在第一个活动的onCreate
中检查此额外内容,并在需要时启动第二个活动。使用此解决方案,您应该小心按下后退按钮 - 如果您不想在“通知开始”的情况下显示第一个活动,您应该在第一个活动的onResume
中关注它