如果获得唤醒锁并且我的应用程序崩溃了,我该怎么办?

ces*_*max 6 crash android process kill-process wakelock

当标志设置为true时,我的应用程序始终运行后台服务.如果是这种情况,即使应用程序关闭,此后台服务仍需要CPU时间.如果我获得唤醒锁(不是用于"屏幕开启"目的而是用于此后台服务)然后应用程序崩溃或用户FC它,那么我无法释放此唤醒锁.

预期结果是什么?

Android知道这个并发布唤醒锁吗?

我应该以什么方式管理这种情况?

scr*_*pse 1

Android 的其他方面也可能会出现此类问题。作为我个人遇到的一个例子,如果您不释放相机对象并且您的应用程序崩溃,则在用户重新启动之前相机将不可用。您可以像这样处理这些类型的情况:

// Store the default uncaughtexceptionhandler in a variable.
private Thread.UncaughtExceptionHandler previousHandler = Thread.currentThread().getUncaughtExceptionHandler(originalExceptionHandler);


@Override
public void onCreate(Bundle bundle){
    Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){

        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
            try{ 
               // release your wakelock here.
            }
            catch(Exception e){ 
               // log 
            }
            finally{
               thread.setUncaughtExceptionHandler(previousHandler);
               previousHandler.uncaughtException(thread, ex);
               thread.setUncaughtExceptionHandler(previousHandler);
            };
        }

    }); 
}
Run Code Online (Sandbox Code Playgroud)

您在这里所做的就是在遇到异常时覆盖正常的崩溃行为,并给自己时间来释放任何真正需要在应用程序完全崩溃之前清理的问题点,并且您没有希望恢复。