我创建了一个使用相机的应用程序,在执行应用程序期间,屏幕始终处于打开状态。
在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();
}
但是,在应用程序终止后,屏幕始终保持打开状态,如果我运行相机应用程序,则会遇到错误,该错误显然是由于未释放相机资源而出现的。
有谁知道如何在应用程序终止时释放所有资源?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我会将锁从OnCreate()移到OnResume()。您希望在活动的可见生命周期内锁定,而不是在活动的整个生命周期内锁定。您的Activity可能肯定仍在运行,而另一个Activity在其前面运行。
我会将发行版移至OnPause()。 OnPause()是应用程序通常应被操作系统杀死的最早时间。
此外,在释放之前,我不会检查是否有锁。如果OnResume()用于获取锁;isHeld在中应该永远是正确的OnPause()。
分享