我有一个带有以下 onCreate() 的 Activity。
我想要的是只有在这个特定的Activity中,检测屏幕是锁定还是解锁,并相应地执行某些事情。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_USER_PRESENT);
receiver = new ScreenLockListener();
registerReceiver(receiver, filter);
setFragment(new CamcorderFragment().setBundle(getIntent().getExtras()), false);
}
由于上述三个动作只能被Java代码注册的接收器接收(不在AndroidManifest.xml中),我想知道我应该何时注册和注销上述接收器。
如果我在 onCreate() 中注册而不是取消注册,它工作正常。
如果我在 onCreate() 中注册并在 onDestroy() 中取消注册,则它的行为不正确,因为在活动中执行 onDestroy() 和下一个 onCreate() 之间没有接收器。
如果我只在 onCreate 中注册同一个接收者而不取消注册,可以吗?它会影响内存管理吗?
如果我错了,我应该在哪里注册和取消注册只要用户不离开这个 Activity 就会存活的接收器(即使 onCreate 和 onDestory 会被调用多次?)
谢谢!