仅当某个活动不可见时,我才想在特定情况下在我的应用程序中启动通知。
当我创建和销毁 Activity(使用 onCreate/onDestroy)时,我设法做到了服务的绑定/取消绑定,如果此 Activity 通过 onPause/onResume 方法可见,则保存在布尔值中,如下面的代码所示:
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);
}
在服务上,我检查此布尔值以启动通知。
它适用于除特定情况外的所有情况:当应用程序在此活动中打开但启用了锁定屏幕时。
通过我所做的一些测试,当锁屏出现时,会调用 Activity.onPause 方法。我希望在锁定屏幕解锁时调用 Activity.onResume 方法,但事实并非如此。当我按下电源按钮召唤锁定屏幕时,已经调用了 Activity.onResume 方法。从这个意义上说,我的做法是不对的。
如何使 Activity.onResume 方法仅在用户解锁锁定屏幕时调用?或者......我如何确定锁定屏幕已解锁并且用户真的在看活动?