我有一个可以拨打电话的项目。调用发生在作为 LifecycleOwner 的 CallActivity 中,而另一个处理传感器的类是 LifecycleObserver。
当用户 A 呼叫用户 B 时,接近传感器已注册并且屏幕关闭。如果用户 A 结束通话并且用户 B 的耳朵仍然靠近设备,则在 CallActivity 处于 onDestroy 时传感器仍处于注册状态。
结果,传感器在不应该靠近手机的地方用手势关闭屏幕。如果用户 B 在 CallActivity 仍然存在时将手机从耳边移开,则传感器已成功取消注册并且应用程序运行正常。
我应该如何处理它。如何确保以正确的方式注销传感器?有没有“全球”的方式?
呼叫活动
lifecycle.addObserver(proximitySensor)
ProximitySensor.class
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
private void registerOnResume(){
registerListener();
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
private void unregisterOnPause(){
unregisterListener();
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
private void unregisterOnStop(){
unregisterListener();
}
顺便说一句,我如何在没有重复代码的注释中声明更多状态?