我猜Android不会让人们这样做,因为他们认为他们已经完美地处理了任务/应用程序。然而,在我的情况下,我确实需要这样做。
我有一个Activity A作为我的应用程序的入口点。在该活动中,它读取首选项并决定启动哪个活动,比如B或C。之后,它就结束了自己。因此,活动A从未出现在用户面前。
我的应用程序将东西存储在sdcard上,并不断地从中读取。所以,当sdcard卸载时,我需要向用户显示一条消息,表明sdcard不可用,而不是打开B或C。我在A中设置了一个检查,以在sdcard不可用时显示该消息。当显示该消息时,A将不会尝试启动B或C。
如果用户只从应用程序启动器进入我的应用程序,则一切正常。但是,我发现如果用户最近打开过它,则用户也可以通过长按主屏幕键并从最近使用的应用程序列表中选择它进入我的应用程序。当用户这样做时,它会跳过A直接进入B或C。由于我没有在它们两个中进行检查,所以在我尝试访问sdcard时抛出异常,并强制关闭对话框弹出。
我可以简单地将我的检查移动到B和C中来解决这个问题。但是,在未来,从A启动的活动数量将增加。如果有6个,我就需要将这个检查复制到6个位置。不用说,这看起来非常丑陋,并且是一个维护噩梦。
因此,最好的解决办法应该是当sdcard被卸载时,从最近使用的应用程序列表中删除我的应用程序。然而,我找不到如何做到这一点。即使杀死进程或使用ActivityManager.restartPackage,它仍然会出现在列表中。有人能告诉我如何从列表中删除它吗?