确定锁定屏幕已解锁

bor*_*ges 0 android android-notifications android-activity

我想在特定情况下仅在某个活动不可见时在我的应用中启动通知.

当我创建并销毁Activity时(使用onCreate/onDestroy),如果通过onPause/onResume方法可以看到此Activity,我设法在服务的绑定/取消绑定中执行此操作e,如下面的代码所示:

public void onCreate(Bundle savedInstanceState) {
    // ...
    bindService(...);
}

public void onDestroy() {
    // ...
    unbindService(mConnection);
}

public void onResume() {
    // ...
    // this method sets to true the Service's boolean which retain Activity's visibility.
    mService.registerActivity(true);
}

public void onPause() {
    mService.registerActivity(false);
}
Run Code Online (Sandbox Code Playgroud)

在服务上,我检查此布尔值以启动通知.

它适用于除特定情况之外的所有情况:在此活动中打开应用程序但启用了锁定屏幕.

通过我做的一些测试,当锁屏出现时,调用Activity.onPause方法.我希望锁定屏幕解锁后才调用Activity.onResume方法,但事实并非如此.当我按下电源按钮来召唤锁定屏幕时,已经调用了Activity.onResume方法.从这个意义上说,我所做的是不对的.

如何仅在用户解锁锁定屏幕时才调用Activity.onResume方法?或者......我怎样才能确定锁定屏幕已解锁且用户真的在看活动?

tec*_*ces 5

Activity.onWindowFocusChanged(boolean hasFocus)每次Activity在屏幕解锁后重新获得焦点时,都应该返回true .