在onDestroy中释放资源真的错了吗?

use*_*447 3 android

Android文档说(在http://developer.android.com/training/basics/activity-lifecycle/stopping.html中):

在极端情况下,系统可能只是在不调用活动的最终onDestroy()回调的情况下杀死您的应用程序进程,因此使用onStop()释放可能泄漏内存的资源非常重要.

听起来像是错的.如何杀死进程泄漏内存?

Sco*_*eld 8

假设您在onStart()方法中启动了一个服务,并且当用户离开Activity时您打算停止该服务.

如果你把代码放在onDestroy()中停止服务,那么代码可能永远不会被调用,这可能会使该服务继续运行,直到Android决定杀死它(这可能暂时不会发生,如果有的话).该运行服务是泄漏应用程序外部内存/资源的示例.

你应该把这样的清理代码放在一个保证被调用的方法中.

请注意,在调用onPause()之后进程是可以运行的,因此onPause()实际上是您想要进行清理的地方,绝对必须发生.

(有关活动生命周期的详细信息,请参阅https://developer.android.com/guide/components/activities.html中的表1 )

泄漏可能非常糟糕的另一件事:蓝牙发现或位置报告(GPS或基于网络)打开但不能尽快关闭 - 对电池寿命非常不利.