私のアプリケーションは、通知システムも備えているサイトのコンテンツを表示します。新しい通知があるかどうかを表示したいのですが、AlarmManager
を呼び出すを使用していますIntentService
。
私の質問は、これをどこから開始/登録すればよいAlarmManager
ですか? 概念実証のためだけにアクティビティに入れましたonCreate()
(そして、うまく機能しています、ありがとうございます:))が、そのアクティビティを2回開始すると、複数のアラームが発生します。
私が思いついた唯一の可能な解決策はこれですが、これがベストプラクティスになるかどうかはわかりません
onCreate()
設定の「アラーム開始」が falseの場合、マネージャーを開始します- 環境設定で開始される変数を設定します。
何らかの理由でアラームが停止した場合、アラームを再開する方法はありません。したがって、バリエーションは次のようになります。
- 常にキャンセルを呼び出す
onCreate()
- そして、常にアラームを設定します。
これは一般的なパターンのようです: 定期的にアラームで情報を取得したいのに、そのアラームを複数回設定しない。どうすればいいですか?いつ、どこで、どのようにアラームを登録しますか?
また、@Zelimir のコメントを続けます:特定のアラームが既に設定されているかどうかを確認できますか?
もちろん、アクティビティが開始されているかどうかに関係なく、アラームが設定されるのが理想的ですが、それは別のことかもしれません。
完全を期すために、これは現在アラームを開始するために使用しているコードです。
AlarmManager alMan = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(this, CommentService.class);
PendingIntent penInt = PendingIntent.getService(this, 0, i, 0);
alMan.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
penInt);
さらに完全を期すために、アプリの説明/状況。
このアプリは基本的に、特定のページのブログ (場合によってはジャーナル) を表示しています。エントリの追加、エントリの表示、コメントの追加などのアクティビティがあります。「マザー」サイトには、通知を受信するオプションがあります (SO でメッセージを受信したときにここに表示される番号のように)。新しいメッセージがあるかどうかを表示したいので、xx 分ごとに取得します。今のところ通知バーに表示されますが、後で何らかのウィジェットにフィードする可能性があります。
さらに詳しい情報が必要な場合:アプリは Androblip と呼ばれ、blipfoto.com というサイトをサポートしています。