安卓应用程序被"杀死"后会发生什么?

7
我有一个应用程序启用了实时推送通知。所以我的问题是,每当任何用户试图使用“高级任务杀手”关闭我的应用程序时,我的应用程序就会进入未定义状态。
“未定义状态”:我的意思是我的应用程序没有完全终止。屏幕上的数据处于不一致状态。
那么是否有办法在应用程序被杀死时将用户带回登录界面,以便用户看不到任何未定义状态。
我还想知道我的应用程序在被杀死后会发生什么,以便我可以解决这个问题。
感谢您的帮助。

当Android应用程序被“杀死”时会发生什么?它会“死亡”。 - ariefbayu
你是否正在使用远程进程?换句话说,你的AndroidManifest.xml文件中是否有任何标记为android:process=":remote"选项的Service实例? - Femi
@femi 我的清单文件中没有 android:process 属性。 - user755499
1个回答

4

这取决于平台的版本。在2.2之前,像ATK这样的第三方应用程序可以使用一个API,该API与管理应用中的“强制停止”按钮执行的操作相同--杀掉所有应用程序进程、删除所有任务/活动、注销所有警报、删除所有通知、停止所有服务等。基本上使应用程序不运行,就像它是首次安装一样,但其持久数据仍然完好无损。

不用说,这往往会导致应用程序的异常行为,因此从2.2开始,像ATK这样的其他应用程序将不能再对您的应用程序进行此操作。它们使用的API现在只能执行与内存杀手相同的操作--仅在后台处于可杀状态时才可以杀死应用程序进程。它不能做比普通内存杀手更多的事情,因此从2.2开始,如果您的应用程序由于使用ATK等应用程序而出现问题,则这会暴露出应用程序中的实际错误,用户将通过设备的正常使用遇到这些问题。


我的应用程序minSdk是7,ATK版本是v1.9.6 build 76,是它杀死了我的应用程序,因为每当我的应用程序被从ATK中杀死时,它会清除所有我的缓存数据,这导致我的应用程序处于未定义状态,但是在“管理应用程序”中的“强制停止”按钮可以将用户带回登录界面,这是期望的行为。那么这是ATK的错误还是我需要自己处理? - user755499
它并不是杀死应用程序,而是杀死进程。当系统需要内存时,它会这样做。当你的进程在后台运行时,你需要处理它被杀死的情况。请参阅此处以获取有关进程可能处于的状态以及何时可以被杀死的概述:http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html#Lifecycle - hackbod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接