Android 活动 - 模仿孤立的应用程序行为(分别处理每个意图)
Android activities - mimic isolated application behavior (process every intent separately)
我写了一个 activity,我希望它的行为(在实例化方面)类似于命令行工具,例如 sort
(假设:sort = my_application, 管道 "|" = intent_resolution)
在 Android 世界中,每个意图都由我的 activity 处理,我仍然可以返回。
用例是这样的:
我们有一个 Activity com.A
.
- 用户从主屏幕运行它:
LAUNCHER/MAIN of com.A
(屏幕斧头出现)
主页按钮已按下。
然后用户以明确的意图运行 A
am -n com/.A -e some_extra
(屏幕 Ay 出现 - 它有所不同,因为它取决于意图)
- 又是主页按钮。
- 用户从启动器图标再次(第三次)运行 A:
LAUNCHER/MAIN of com.A
(屏幕 Ay 出现,因为 Android 'thinks' 该用户想要上一个 activity。但是 他想再次见到 Ax - 作为对意图 LAUNCHER/MAIN)
的正确回应
我可以通过设置 launchMode=singleTask
来获得这样的行为,所以我的每个意图都由 onCreate
或 onNewIntent
处理。但是在这种情况下我失去了历史。因此,如果 A 调用 B,B 调用 A (A → B → A),我将首先失去 A。如果 A 调用 A (A → A),我将无法返回。
是否可以设置 <activity>
清单属性的这种组合或使用其他方式来获得该行为?
注意:如果我更改 LAUNCHER/MAIN
用于任何其他目的,它不会改变任何内容。
看起来像
的组合
android:finishOnTaskLaunch="true"
android:finishOnCloseSystemDialogs="true"
和默认值 launchMode
或多或少根据我的需要工作。我还没有对其进行深入测试,也不期望它能 100% 精确地工作,但目前它工作正常。
我也试过detect home button
然后手动完成activity,但显然它也不是很可靠。
编辑:此解决方案的缺点是每次 phone 响铃或您只是锁定屏幕时,带有此类清单的应用程序都会被销毁。
我写了一个 activity,我希望它的行为(在实例化方面)类似于命令行工具,例如 sort
(假设:sort = my_application, 管道 "|" = intent_resolution)
在 Android 世界中,每个意图都由我的 activity 处理,我仍然可以返回。
用例是这样的:
我们有一个 Activity com.A
.
- 用户从主屏幕运行它:
LAUNCHER/MAIN of com.A
(屏幕斧头出现)
主页按钮已按下。
然后用户以明确的意图运行 A
am -n com/.A -e some_extra
(屏幕 Ay 出现 - 它有所不同,因为它取决于意图)
- 又是主页按钮。
- 用户从启动器图标再次(第三次)运行 A:
LAUNCHER/MAIN of com.A
(屏幕 Ay 出现,因为 Android 'thinks' 该用户想要上一个 activity。但是 他想再次见到 Ax - 作为对意图 LAUNCHER/MAIN)
我可以通过设置 launchMode=singleTask
来获得这样的行为,所以我的每个意图都由 onCreate
或 onNewIntent
处理。但是在这种情况下我失去了历史。因此,如果 A 调用 B,B 调用 A (A → B → A),我将首先失去 A。如果 A 调用 A (A → A),我将无法返回。
是否可以设置 <activity>
清单属性的这种组合或使用其他方式来获得该行为?
注意:如果我更改 LAUNCHER/MAIN
用于任何其他目的,它不会改变任何内容。
看起来像
的组合android:finishOnTaskLaunch="true"
android:finishOnCloseSystemDialogs="true"
和默认值 launchMode
或多或少根据我的需要工作。我还没有对其进行深入测试,也不期望它能 100% 精确地工作,但目前它工作正常。
我也试过detect home button 然后手动完成activity,但显然它也不是很可靠。
编辑:此解决方案的缺点是每次 phone 响铃或您只是锁定屏幕时,带有此类清单的应用程序都会被销毁。