开发者社区 问答 正文

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

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

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

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

这是重写的onStop()方法:


@Override
protected void onStop() {

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

    super.onStop();
}

但是,在应用程序终止后,屏幕始终保持打开状态,如果我运行相机应用程序,则会遇到错误,该错误显然是由于未释放相机资源而出现的。

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

展开
收起
Puppet 2020-01-20 09:50:58 530 分享 版权
1 条回答
写回答
取消 提交回答
  • 我会将锁从OnCreate()移到OnResume()。您希望在活动的可见生命周期内锁定,而不是在活动的整个生命周期内锁定。您的Activity可能肯定仍在运行,而另一个Activity在其前面运行。

    我会将发行版移至OnPause()。 OnPause()是应用程序通常应被操作系统杀死的最早时间。

    此外,在释放之前,我不会检查是否有锁。如果OnResume()用于获取锁;isHeld在中应该永远是正确的OnPause()。

    分享

    2020-01-20 09:51:10
    赞同 展开评论