我有一个可以进行后台视频录制的服务,在此期间我禁用了 Keyguard。当我想停止录制时,我会停止服务并调用 OnDestroy()。
我可以在我的跟踪中看到ReenableKeyguard()
被调用的。但是,在我“强制停止”启动服务的主机应用程序之前,Keyguard 仍处于禁用状态。
什么可能导致 Keyguard 在ReenableKeyguard()
被调用时保持禁用状态?
这是破坏服务并重新启用键盘保护的代码。(它是 C#/Xamarin 但与 Java 基本相同)
public override void OnDestroy()
{
Tracer.Trace("BackgroundVideoRecorder::OnDestroy();");
base.OnDestroy();
try
{
camera.Reconnect();
mediaRecorder.Stop();
mediaRecorder.Reset();
camera.StopPreview();
mediaRecorder.Release();
camera.Release();
camera = null;
if (Common.KeyGuardLocker != null)
{
Tracer.Trace("BackgroundVideoRecorder::OnDestroy() - ReenableKeyguard()");
Common.KeyGuardLocker.ReenableKeyguard();
}
windowManager.RemoveView(surfaceView);
}
catch (Exception ex)
{
Tracer.Trace(ex);
}
}