Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 首选项活动的标志_Android - Fatal编程技术网

Android 首选项活动的标志

Android 首选项活动的标志,android,Android,我在管理历史堆栈中的活动时遇到问题 背景: 我有两个活动:主要活动和首选活动 我有一个在开机时启动通知的广播接收器。通知启动主活动。这些标志是:Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP用于Intent和通知。FLAG_AUTO_CANCEL。(在大多数教程中,broadcastreceiver启动了一个启动通知的服务。但我直接在broadcastreceiver上启动通知。这对我来说很好,但只是提醒一下。)

我在管理历史堆栈中的活动时遇到问题

背景:

我有两个活动:主要活动和首选活动

我有一个在开机时启动通知的广播接收器。通知启动主活动。这些标志是:Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP用于Intent和通知。FLAG_AUTO_CANCEL。(在大多数教程中,broadcastreceiver启动了一个启动通知的服务。但我直接在broadcastreceiver上启动通知。这对我来说很好,但只是提醒一下。)

启动首选项活动的意图未设置任何标志

问题

  • 从启动器启动主活动并打开首选项活动
  • 在首选项活动中,单击再次启动主活动的通知。再次打开首选项活动
  • 按Home并启动打开主活动的应用程序
  • 现在,如果我单击后退而不是退出应用程序,我将进入首选项活动(前面打开的那个),而另一个后退会将我移到主活动(前面打开的那个)

在我的上一个应用程序中,我使用activityMode=“singleInstance”删除了通过通知创建的活动的新实例。但我想用更好的方法来解决这个问题,即使用正确的标志。

覆盖Main activity中的onBackPressed方法以显式完成()任何主要活动和首选活动。

虽然这会起作用,但我认为这不是处理这种情况的理想方法。理想情况下,当你按下Home按钮并启动应用程序时,它应该保存状态,这意味着它应该返回到首选项活动。这需要在onPause和onResume中实现。此外,理想情况下,我们希望能够在从启动器启动时设置一个标志,如本线程中所讨论的:back键正在执行其工作。它正在按back键关闭正确的活动。这里的问题是当我从设置开始新的活动而不是恢复正在创建的新实例时。好吧,现在我对您最初的问题感到困惑。如果您按下home键并再次启动应用程序,它应该返回到首选项活动,因为这是您停止的地方。无论采用哪种方式,如果您从首选项活动启动主活动时使用了正确的标志标志\u Activity\u CLEAR\u TOP,则会创建一个新实例,但这也会清除堆栈。在这里检查一下常见的问题:这也没什么好运气。