除了具有更高优先级内存需求的应用程序之外,还有啥可以破坏系统的活动?

Posted

技术标签:

【中文标题】除了具有更高优先级内存需求的应用程序之外,还有啥可以破坏系统的活动?【英文标题】:What other can destroy Activity by the system than app with higher prio need for memory?除了具有更高优先级内存需求的应用程序之外,还有什么可以破坏系统的活动? 【发布时间】:2020-05-04 03:47:32 【问题描述】:

android 的 Activity 生命周期又来了。我看了official life cycle diagram,我很困惑,因为它表明除了其他优先级更高的应用程序需要内存的情况之外,Android OS 会破坏 Activity 可能还有其他原因?

在onDestroy() section我看到只有两个原因:

    正在结束(在致电finish() 之后) 由于配置更改而被 Android OS 销毁

不过,该图表明系统可能想要销毁此 Activity 的其他一些原因,是否存在?

【问题讨论】:

【参考方案1】:

一般来说,如果 Android 想要回收资源,它会杀死托管在后台的应用程序的操作系统进程。

但是,我们已经看到了这样的情况,Android 不会杀死整个操作系统进程,而是会选择性地销毁活动以回收资源。这似乎取决于制造商,并且可能已由特定制造商实施(无论出于何种原因)。在这种情况下,Android 将在调用了onStop() 的活动上调用onDestroy(),即使Activity 没有调用finish()

我们不知道发生这种情况的确切原因,但我们肯定已经看到了。当用户从最近的任务列表中删除应用程序(通过滑动)并且应用程序在操作系统进程中有一个正在运行的Service 时,可能会发生这种情况。在这种情况下,Android 可能只是销毁所有活动,但让操作系统进程继续运行,以便不必重新启动Service

【讨论】:

以上是关于除了具有更高优先级内存需求的应用程序之外,还有啥可以破坏系统的活动?的主要内容,如果未能解决你的问题,请参考以下文章

在特定条件下切换约束

java开发工具除了eclipse之外,还有那些啊?有那个比较好用啊?

除了通过 main 的 argv 之外,还有其他方法可以将用户参数传递给程序吗?

除了android中的活动之外,还有啥是调用网络类的好方法?

除了 Android API 之外,还有其他用于计算地理围栏违规的 API

除了 Cocoapods 之外,还有其他方法可以将 Firebase 整合到我的 iOS 应用程序中吗?