問題タブ [android-doze]

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 投票する
0 に答える
431 参照

android - アラームが鳴るたびに setExactAndAllowWhileIdle() で新しいアラームを手動で設定する: Android

これは以前に何度か尋ねられたことは知っていますが、今まで自分に合ったものを見つけることができませんでした. setRepeating() を使用して、アラーム マネージャーを毎分実行するようにスケジュールしています。ただし、これは Android 6.0 の Doze モード以降は機能しなくなりました。setExactAndAllowWhileIdle() も使用してみましたが、setexactRepeating ではないため、繰り返されていないようです。

以下は私のコードです、

ServiceToUpdateWidget を毎分呼び出す必要があります。電話がディープスリープまたは居眠りモードに入った場合でも、それを行う方法はありますか. この目的でタイマーやカウントダウンを使用できますか? 居眠りモードで動作しますか?

以下のような多くのリンクをたどりましたが、

ただし、まだ 1 分ごとにサービスを呼び出すことはできません。

また、alarmManager.setAlarmClock() を使用してみましたが、まだうまくいきません。

次のようなリンクを見つけました: https://www.reddit.com/r/androiddev/comments/40ci7v/how_to_set_the_repeating_alarm_which_will_work/

「アラームが鳴るたびに setExactAndAllowWhileIdle() を使用して新しいアラームを手動で設定する必要があります。ただし、setInexactRepeatingAndAllowWhileIdle() が存在しないのには理由があります。これにより、ユーザーのバッテリー寿命が短くなります。本当に必要な場合にのみ、この回避策を使用してください。それ。"

以前のアラームがオフになったときに、新しいアラームを手動で設定するにはどうすればよいですか? お願いします、誰か助けてくれませんか?

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

android - バッテリー最適化のホワイトリストが Doze によるアプリの延期を妨げない

私のアプリは 15 分ごとに GPS 位置データをサーバーに送信します。この機能は、アプリの中心的な目的です。

ただし、電話機の電源を切って使用していないときは、GPS のログは徐々に減少します。GPS レコード間の時間は、しばらくの間 15 分で、その後 1 時間、2 時間、4 時間、6 時間になり、電話を移動するか電源を入れると 15 分に戻ります。

これは、Android 6 で導入された Doze モードによるものと思われます。アプリを Battery Optimizations ホワイトリストに追加しましたが、違いはありませんでし

  1. この場合、ホワイトリストが役に立たないのはなぜですか?
  2. 代わりに何をすべきですか?Wakelockを一定間隔で遅延させて Doze を防ぐことはできますか?

    /li>
0 投票する
3 に答える
5162 参照

android - Doze モードで現在地の最新情報を取得する

居眠りモードのときに Android アプリで位置情報の更新を取得しようとしていますが、これは Android 5.x まで機能していました。Android 6 と居眠りの出現により、私が何をしても、ある時点で更新が停止します。このトピックに関するいくつかの記事とstackoverflowの回答を読んだ後、次の変更を加えました。

  • サービスをフォアグラウンド サービスにしました
  • サービスが部分的な wake lock を保持するようにしました
  • アプリに WAKE_LOCK パーミッションを付与しました
  • サービスを別のプロセスで実行しました(一部のAndroidバグの回避策のため)
  • アプリのバッテリー最適化を無効にしました

しかし、それでも、doze が開始されたときに位置情報が更新されません。doze が開始されたときにサービス スレッドが実行され続けることを確認しました (定期的にメッセージをログに記録することによって) が、どういうわけか、位置情報マネージャーが更新の送信を停止します。この点に関して、居眠りと LocationManager に関するドキュメントはかなり乏しいので、誰かが居眠りで場所マネージャーを生かしておく方法を知っているかどうか疑問に思っていましたか? 定期的に呼び出された場合に LocationManager をアクティブに保つメソッドが LocationManager にありますか? 1 秒に 1 回、更新頻度の高い GPS 更新のみに関心があることに注意してください。

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

android - Android Doze: アプリケーション全体またはそのプロセスに個別に影響しますか?

GPS データを収集してデータベースに保存し、毎分バックエンドに送信する必要があります。そして、Doze モードが問題を起こさないようにしたいだけです。

  1. フォアグラウンド サービスを起動し、onLocationChangedそこでコールバックを実装するとします。

    Doze で GPS やインターネットの使用を許可するために、フォアグラウンド サービスですべての操作 (収集、保存、送信) を行う必要がありますか?

  2. データを別の場所 (たとえば ) に保存/送信したい場合、データを処理する準備ができていて、スリープしていないBroadcastReceiverことを確認するにはどうすればよいですか?BroadcastReceiver

  3. Android M にはバグがあり、フォアグラウンド サービスが Doze モードの影響を受けます: https://stackoverflow.com/a/37869501/3210556

    考えられる回避策は、別のプロセスでフォアグラウンド サービスを起動することです。

    アプリにフォアグラウンド サービスがあると仮定すると、居眠りの影響を受けないのは正確には何ですか?

    • フォアグラウンドサービス自体?
    • フォアグラウンド サービスに関連付けられているプロセスは?
    • アプリ全体?

ありがとうございました。