特定のアクティビティが表示されていない場合にのみ、特定の状況で通知をアプリで起動します。ロック画面がロックされていないことを確認してください
(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メソッドが呼ばれるようにすることができますか?または...ロック画面がロックされておらず、ユーザーが本当にアクティビティを見ていることを確認するにはどうすればよいですか?
'Activity.onWindowFocusChanged(boolean hasFocus)'は必要な値を返しますか? – techiServices
@techiServicesありがとう!これは完璧に機能しました。しかし、私はこの "答え"を受け入れることはできません。私はそれを受け入れることができるように質問に答えてください。 OK? – borges
回答しました。どうもありがとう。 – techiServices