ブロードキャストレシーバでアラームマネージャを使用しています。指定された時間が発生した場合、余分なパラメータでMainActivityを更新する必要があります。ここブロードキャストレシーバからアクティビティが呼び出されていません
コードがlogcatで
public void onReceive(Context context, Intent intent){
//calculate time
//check time
if(isTime){
Log.d("tag", "sleep");
//set value in shared preference
editor = (context.getSharedPreferences("uniqueId", 0)).edit();
editor.putBoolean("sleepmode",false);
editor.apply();
Intent gotoSmileyScreen = new Intent(context, MainActivty.class);
gotoSmileyScreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(gotoSmileyScreen);
}
}
放送受信機である、私は「スリープ」を見ることができていますので、私は方法がここ
は内のコードで適切なタイミングで呼び出されているのを知っていますMainActivity
は//inside on create
//get value from shared preference and check
if(!isSleepMode){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}else{
//do nothing
}
ユーザーはほとんどすでにその活性が必ずしも必要ではないだろう。 アクティビティが一部のデバイスに対して呼び出されていて、画面が期待どおりにオフになりますが、他のアクティビティではアクティビティがインテントから呼び出されず、画面が消えません。
ドキュメント、Intent.FLAG_ACTIVITY_CLEAR_TASKからは、再びそれを呼び出す前にアクティビティをクリアする必要がありますか私は何かが足りないのですか?
受信者からアクティビティを再度呼び出すことなく更新する方が良いでしょうか?
編集:私のアプリはランチャーであり、インテントを呼び出す効果がありますか?