問題タブ [alarmmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
92439 参照

android - Alarmmanagerを使用して特定の時間にサービスを開始する

私はたくさんの場所を検索しましたが、AlarmManagerを使用して毎日特定の時間にサービスを開始する方法(またはそれが不可能な場合はアクティビティ)の明確な順次説明を見つけることができませんでしたか?

そのようなアラームをいくつか登録したいのですが、それらをトリガーするとサービスが開始されます。サービスに小さなコードを入れて実行し、サービスを完全に終了することができます。

このコードを試して4.45でアラームをアクティブにしましたが、サービスが起動しませんでした...プロセスを実行し続ける必要がありますか?私は何か間違ったことをしていますか?

もう1つ、次のコードを使用した場合、サービスは完全に実行されます。

0 投票する
3 に答える
17507 参照

android - Service の代わりに AlarmManager と BroadcastReceiver - それは悪いことですか? (タイムアウト)

背景情報:

アプリが閉じられている場合でも、約 1 時間ごとに Web からいくつかのデータを更新する必要があります。データ自体の更新には40秒~1分程度かかります。その後、Serializable としてファイルに保存されます。このファイルは、アプリの起動時に読み取られます。

これは私が今のところ取ったアプローチです(サービスを使用していません)

次のように AlarmManager と BroadcastReceiver を使用します。

私のRepeatingAlarmReceiver_REFRESH_DATA.classは、Web からのデータの更新を処理します。

私が持っているマニフェストで:

問題 :

アラームは時間通りに起動され、更新が開始されますが、約 10 秒後に停止します (タイムアウト):

06-25 11:55:05.278: WARN/ActivityManager(76): ブロードキャスト BroadcastRecord{44bb4348 null} のタイムアウト - receiver=android.os.BinderProxy@44bcc670

06-25 11:55:05.278: WARN/ActivityManager(76): タイムアウト中の受信者: ResolveInfo{44bb42c0 com.cousinHub.myapp.RepeatingAlarmReceiver_REFRESH_DATA p=0 o=0 m=0x0}

06-25 11:55:05.278: 情報/プロセス (76): 信号を送信しています。PID: 819 SIG: 9

06-25 11:55:05.298: INFO/ActivityManager(76): プロセス com.cousinHub.myapp:remote (pid 819) が停止しました。

ps: 奇妙なことに、この「タイムアウト」は、HTC Hero (まだ Android 1.5 - API レベル 4) では約 10 秒後に発生しませんが、Nexus One (2.1-update1) では問題ありません。

質問:

  1. なぜこのタイムアウト?これを回避する簡単な方法はありますか?
  2. マニフェストで BroadcastReceiver を正しく設定しましたか? (このタイムアウトを回避するために) 何かを追加する必要がありますか?
  3. この種の「Web から更新」機能のサービスを絶対に利用する必要がありますか? (この記事を考慮: http://www.androidguys.com/2009/09/09/diamonds-are-forever-services-are-not/ ) YES の場合 (サービスに切り替える必要があります): 適切なコード スニペット/これのチュートリアル...

いつものように、あなたの助けに感謝します.

H.

0 投票する
1 に答える
14451 参照

android - AlarmManager - 毎正時にアラームを繰り返す方法は?

イベントを 1 時間ごと (5:00、6:00、7:00 など) に発生させたいと考えています。スレッドを使用して永続的なバックグラウンド サービスを試してみましたが、次の理由により適切な解決策ではありませんでした。

  • バッテリー消費
  • Androidのメモリ管理によるサービス終了

だから私はAlarmManagerで試しています。アラームを X 秒で起動するように設定すると機能します (「set」メソッドを使用)。しかし、アラームがキャンセルされるまで、毎正時に (「setRepeating」メソッドを使用して) イベントを繰り返すにはどうすればよいでしょうか?

ありがとう!

0 投票する
1 に答える
1690 参照

android - エミュレータではAlarmManagerが起動しますが、物理デバイスでは起動しません

AlarmManagerを呼び出すアプリケーションがあります

マニフェストには必須のエントリがあります

MyEventReceiverは次のようになります

アラームがアクティブになったら、MyEventReceiverを起動して、アプリケーションが実行されていない場合でも何かを実行する必要があります。エミュレータではこれが当てはまりますが、実際のデバイスではそうではありません。

例として、エミュレータでMyApplicationを起動し、DDMSで実行中のMyApplicationのプロセスを確認できます。MyApplication内からアラームを追加し、DDMS内でMyApplicationのプロセスを強制終了します。アラームが発生すると、MyEventReceiverが機能し、DDMSにMyApplicationとMyApplication:remoteの2つのプロセスが表示されます。

実際のデバイスでMyApplicationを起動した場合、アラームを追加し、アラームが何も実行されないようになったときにタスクキラーを使用してプロセスを強制終了します。デバイスをデバッガーに接続し、デバイスのタスクキラーの代わりにDDMSを使用してプロセスを停止すると、アラームが発生し、期待どおりに機能します。

誰かがこれが起こっている理由を理解するのを手伝ってもらえますか?アラームがスケジュールされると、デバイスを再起動しない限りアラームが持続するという印象を受けました。アラームを実行する必要があるときに、デバイスは起動しています。

0 投票する
3 に答える
8144 参照

android - Androidのアラームマネージャーがすぐに起動するのはなぜですか?

10秒ごとに更新通知を送信するためのサンプルコードに従っています。コードは次のとおりであり、のUpdateServiceためにありAppWidgetProviderます。を置くThread.sleep(10*1000);と、サービスループの予想される動作を確認できます。私は明らかに、すぐにトリガーされる根本的に間違った何かを持っています。PendingIntentリスナーにアップデートをブロードキャストするアラームのはずです。

0 投票する
1 に答える
1182 参照

android - カレンダー付きアラームマネージャーのランダムスケジュール

22:00 から 06:00 の間に発生する異なるランダムな時刻で、AlarmManager を毎日起動するようにスケジュールしようとしています。

私はこのテクニックを試しましたが、うまくいかないようです:

}

私の期待される結果は、15 秒ごとにアラームが発生することです。これは出力です:

ご覧のとおり、15 秒ごとにアラームが鳴るわけではありません。

この機能に入るたびに、新しいアラーム時刻を再スケジュールする状況を実現したい

解決策やその他の効果的な提案は大歓迎です。

ありがとう。

0 投票する
1 に答える
1887 参照

android - Android アラームマネージャー

OK、AlarmManager の 2 つの例を試しました。1 つは commonsware の Web サイトから、もう 1 つは manning の Web サイトからです。私が現在取り組んでいるコードは、マニング Web サイトからのものです。[ http://unlocking-android.googlecode.com/svn/chapter8/trunk/SimpleAlarm/][1]

AlarmReceiver と GenerateAlarm の 2 つのクラスがあります。トーストがエミュレーターに表示されない理由を知っている人はいますか? 私は東部時間帯にいて、UTC を使用しているためだと思っていましたが、さまざまなことをいじっていて、どれも機能していないようです。

0 投票する
2 に答える
869 参照

android - Android インテントアラームマネージャー

alarmmanager を使用して設定されるインテントを作成しようとしています。現在、これを 1 つのインテントで実行し、余分なデータを追加することができます (文字列ですが、区切り記号を使用して 1 つの文字列として送信します)。すべてが正常に機能し、正しい時間にオフになります。ただし、このように複数のインテントを送信しようとすると、それらは上書きされ、正しいタイミングで送信されるのは 1 つだけです。アラームマネージャーとは異なるようにインテントを構造化するにはどうすればよいですか (filterIntent() の実行時にインテントが削除されると思います)。

長い話短い- putExtra() はすべてのインテントを同じように見せます...それらが削除されないようにそれらを異なるようにするにはどうすればよいですか(特定のものを削除したい場合に備えてそれらを追跡します)

0 投票する
2 に答える
26418 参照

android - マニフェストではなくコードでブロードキャスト レシーバーを登録した Android アラーム マネージャー

アラームを使用して、特定の時間にコードを実行したいと考えています。マニフェストに登録されたブロードキャストレシーバーでアラームを正常に実装しましたが、私が理解しているように、このメソッドはブロードキャストレシーバーに別のクラスを使用します。

このメソッドを使用して別のアクティビティを開始できますが、それを使用してメイン アクティビティでメソッドを実行することはできませんか?

(ブロードキャスト レシーバーから実行中のアクティビティを通知するにはどうすればよいですか? )

そのため、上記の回答で説明したように、ブロードキャストレシーバーをメインアクティビティに登録しようとしています。

ただし、これをアラーム マネージャーで動作させることができませんでした。アラーム インテントをブロードキャスト レシーバーにリンクする方法がわかりません。アラーム マネージャ ブロードキャスト レシーバをアクティビティに動的に登録する例を教えてください。または、これを行う方法を説明してください。

0 投票する
2 に答える
2461 参照

android - Androidアプリの最初の実行時にコードを実行する

私はそれの最初のリリースバージョンにある新しい地震通知アンドロイドアプリを持っています。現在問題があります。私のアプリにはバックグラウンドで実行されているサービスがあり、これはX期間ごとに実行されるようにスケジュールされています。自分自身をスケジュールするには、少なくとも1回実行する必要があります。現在、それはあなたが電話を起動するときに起こります。明らかに、ユーザーがアプリをインストールした後、ユーザーに電話を再起動させたくありません。

また、私が望まないのは、実行するたびにアプリUIがそれを呼び出すようにすることです。それは明らかにユーザーのスケジューリングを台無しにするからです。代わりに、UIアプリを電話で初めて実行するときに、サービスを実行できるようにして、それ自体をスケジュールし、将来的に期待どおりに実行し続けることができるようにする必要があることを知っておく必要があります。

私がそれを解決できる別の方法は、サービスをウェイクアップするための既存のアラームのリストを知っていれば、アプリがすでに実行されているかどうかを知ることです。

アプリのソースコードを確認したり、バイナリファイルを実行したりする場合。次のgithubのURLをご覧ください

私の意図がはっきりしていることを願っています。アプリの背景を説明するだけです。これは、地震が発生したときに通知を生成し、追加機能を備えた地図上に影響を受けた領域を表示するAndroid携帯用の通知アプリです。過去の地震のリストを表示するUIアプリがあります。そして、新しいものを監視するサービス。

前もって感謝します。