特定のアクティビティが表示されていない場合にのみ、特定の状況でアプリで通知を起動したい。
次のコードが示すように、アクティビティを作成および破棄するときに(onCreate / onDestroyを使用して)サービスのバインド/アンバインドを実行し、このアクティビティが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メソッドが呼び出されるようにするにはどうすればよいですか?または...ロック画面のロックが解除され、ユーザーが実際にアクティビティを見ていることをどのように識別できますか?