归功于 Toddler Lock 的作者,我曾与他讨论过这个问题。引入的错误完全是我的。
在您的清单中创建一个禁用的活动,其亲和力等于空字符串。在您的程序中,启用它,然后使用标记为 FLAG_ACTIVITY_NEW_TASK 的意图启动它。它会在最近的活动中出现。禁用该任务,它就会从显示屏上消失。
做足够的这些,你会淹没最近的活动显示。如果它有办法返回比您拥有的虚拟活动更多的活动,那么用户将能够退出您的程序。
确保在退出时禁用任务,并确保如果您从最近的活动中选择其中一项任务,您的程序会执行一些合理的操作。
这是我清单中两个任务的示例:
<activity android:name="com.foo.android.recentactivity.Clear1"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:label="."
android:enabled="false"
android:icon="@drawable/clearicon"
android:taskAffinity="" />
<activity android:name="com.foo.android.recentactivity.Clear2"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:label="."
android:enabled="false"
android:icon="@drawable/clearicon"
android:taskAffinity="" />