我有一个应用程序接收来自AlarmManager
. 在此之后,它会启动一个透明的Activity
( AlarmAlertDialogActivity
),然后显示一个AlertDialog
. AlertDialog
在调用结果上单击取消finish()
。
由于AlarmAlertDialogActivity
不是从另一个发射Activity
器而是从广播接收器发射的,因此它是用发射的
Intent.FLAG_ACTIVITY_NEW_TASK
这意味着 Activity 将在新任务中启动。
我的问题是,当应用程序在取消AlertDialog
(即按住主页按钮并单击应用程序的图标)后从最近的历史记录中重新启动时,AlertDialog 会重新启动。我曾希望通过使用finish()
/Intent
标志能够避免这种情况;我想要发生的是要启动的父 ActivityActivity
之前的最后一个。AlertDialog
我Intent.FLAG_ACTIVITY_NO_HISTORY
在启动时尝试将位掩码作为附加标志,AlarmAlertDialogActivity
但这似乎没有什么区别。
位掩码Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
有效,但只能通过从最近的历史记录中删除应用程序(顾名思义)。这对用户体验是不利的。
那么,是否有可能获得我正在寻找的 UI 流程?
更新- 根据要求提供更多信息:
来自广播接收器的 Logcat、AlertDialog 活动和我的主要活动:
05-30 10:36:00.132: D/everyOtherApp(362): Received alarm broadcast at: Wed May 30 10:36:00 GMT+00:00 2012
05-30 10:36:00.262: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate()
05-30 10:36:00.912: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume()
05-30 10:36:12.461: D/everyOtherApp(362): Cancel pressed
//Cancel exits the activity. I now relaunch the app from recent history:
05-30 10:36:20.233: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate()
05-30 10:36:21.621: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume()
从 BroadcastReceiver 启动 Activity 的代码:
Intent intent = new Intent(new Intent(applicationContext, AlarmAlertDialogActivity.class));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Constants.SCHEDULED_ALARM_TAG, alarm);
applicationContext.startActivity(intent);
清单文件中的 AlarmAlertDialogActivity:
<activity
android:name=".AlarmAlertDialogActivity"
android:theme="@android:style/Theme.NoDisplay" >
</activity>