1

バックグラウンドの Android サービスがあります。バックグラウンドで実行され、URL をチェックして結果を確認します。結果が変化した場合、アプリはユーザーに通知を送信します。このサービスを 3 時間ごとに実行したい。私の問題は、いつ、どのようにサービスを開始するかです。

  • 一般的な動作は、ブロードキャスト レシーバーを作成することです。
  • 次に、受信者が を取得したらサービスを開始しますACTION_BOOT_COMPLETED
  • また、レシーバーが起動を完了すると、レシーバーは AlarmManager を使用して、3 時間ごとに実行するアラームを作成します。

しかし、アプリケーションをインストールした後、ユーザーが電話を再起動しない場合はどうなるでしょうか? ユーザーが起動しない場合、AlarmManager はアラームを作成しません。

  • したがって、別のオプションは、ユーザーが最初にアプリケーションを実行したときにアラームを作成することです。
  • ユーザーがアプリケーションを再起動するとどうなりますか? 以前のアラームをすべてキャンセルしてAlarmManager.cancel、アラームを再作成する必要がありますか?

では、Android アプリケーションのアラームを設定する条件は何ですか?

4

1 に答える 1

1

最初のアラームを作成する方法は 2 つあります。アプリを初めて起動したときか、別のブロードキャスト レシーバーでACTION_MY_PACKAGE_REPLACED. これは、アプリがインストールまたは更新されるたびに呼び出され、そのときまたは再起動が発生したときにアラームを設定できます (再起動するとアラーム マネージャーからアラームがクリアされるため)。次に、サービスが実行されるたびにアラームをリセットします。

追加のヒントとして、WakeLockまだ使用していない場合に備えて、Android のドキュメントを確認してください。サービス開始時にウェイクロックを設定しないと、サービス開始直後にスリープ状態になる場合がありますonStartCommand。また、サービス内で何らかのエラー状況 (ネットワーク接続の欠落など) が発生した場合でも、アラームのリセットが完了していることを確認してください。

編集: で問題を抱えている人もいますACTION_MY_PACKAGE_REPLACED。このような場合、ACTION_PACKAGE_REPLACED置き換えられたのが正しいパッケージであることをコードがチェックする限り、使用できます: ACTION_MY_PACKAGE_REPLACED が受信されていません

于 2013-10-28T20:19:31.940 に答える