MainActivity に AlarmManager があり、これを使用して Web サイトをチェックし、特定の条件が真の場合に通知を作成します。
AlarmManger は、ペンディング インテント > ブロードキャスト レシーバーを別のクラスで使用します。次に、そのブロードキャスト レシーバー クラスは、コードを実行して Web サイトをチェックし、結果を処理する 3 番目のアクティビティを呼び出します。これらはすべて、アプリが開かれていない間にバックグラウンドで行われます。
問題は、アラーム イベントが発生すると、実際にはアプリのメイン レイアウトが開くことです。MainActivity 以外では、このレイアウトを具体的に作成したり膨らませたりしません。
ブロードキャスト レシーバーが新しいインテントを呼び出すときに問題が発生していると思います。FLAG_ACTIVITY_NEW_TASK がレイアウトを開く原因だと思います。マニフェストで特別な起動モードを指定していないので、それが問題になるとは思いません。
私の質問は、表示するレイアウトをトリガーせずに、ブロードキャストレシーバーからバックグラウンドでこのインテントを開始する方法はありますか? マニフェストに別のフラグなどを追加できますか?
package alert.wow.onlinealert;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class AlarmReceiver1 extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
System.out.println("Timed Signal received by AlarmReceiver");
try {
Intent intent1 = new Intent(context, Jrequest.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
ここでの最終目標は、AlarmReceiver を 1 時間に 1 回バックグラウンドで静かに実行し、基準が満たされた場合に通知を送信することです。アプリ自体を開く必要はほとんどありません。
役立つ場合は、さらにコードを投稿していただければ幸いです。
ありがとう、クリス