Android:如何在应用程序终止时释放资源?

Nik*_*lin 13 resources android

我创建了一个使用相机的应用程序,在应用程序执行期间,屏幕始终打开.

在onCreate()方法中我添加了锁:

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire(); 
Run Code Online (Sandbox Code Playgroud)

这是覆盖onStop()方法:

@Override
protected void onStop() {

    if(mWakeLock.isHeld())
    {
        mWakeLock.release();
    }

    super.onStop();
}
Run Code Online (Sandbox Code Playgroud)

但是在应用程序终止后,屏幕一直处于打开状态,如果我运行相机应用程序,它会遇到一个错误,这个错误很明显,因为相机资源没有被释放.

有没有人知道如何在应用程序终止时释放所有资源?

Wil*_*ill 13

我会把锁OnCreate()移到OnResume().您希望在活动的可见生命周期内锁定,而不是活动的整个生命周期.你的活动可以肯定仍然在运行前面的另一个Activity运行.

我会把这个版本移到OnPause(). OnPause()是您的应用程序通常应该被操作系统杀死的最早点.

另外,在发布之前我不会检查是否有锁.如果你OnResume()用来获得锁; isHeld永远应该是真实的OnPause().