Android文档说明(在http://developer.android.com/training/basics/activity-lifecycle/stopping.html中):
在极端情况下,系统可能会在不调用活动的最终onDestroy()回调的情况下终止您的应用程序进程,因此使用onStop()释放可能会泄漏内存的资源非常重要。 / p>
听起来像是错的。如何杀死进程泄漏内存?
答案 0 :(得分:8)
假设您在onStart()方法中启动了一项服务,并且当用户离开活动时您打算停止该服务。
如果你把代码放在onDestroy()中停止服务,那么代码可能永远不会被调用,这可能会使该服务继续运行,直到Android决定杀死它(这可能暂时不会发生,如果有的话)。正在运行的服务就是泄漏应用程序之外的内存/资源的例子。
你应该把这样的清理代码放在一个保证被调用的方法中。
请注意,在调用onPause()之后进程是可以运行的,因此onPause()实际上是你想要进行清理的地方,绝对必须发生。
(有关活动生命周期的详细信息,请参阅https://developer.android.com/guide/components/activities.html中的表1)
泄漏可能非常糟糕的另一件事:蓝牙发现或位置报告(基于GPS或基于网络)已开启但未尽快关闭 - 对电池寿命非常不利。