問題タブ [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.
android - NotificationListenerService と Doze モードとアプリ スタンバイ
電話の通知をリッスンし、を介して Android Wear ウォッチにメッセージを送信するアプリがありますMessageApi
。Android 6 を搭載した一部のデバイス、特に Huawei Mate 8 を除いて、すべて正常に動作します (すべての Huawei Android 6 がこれを行うようです)。
Huawei には、フリーズ アプリのバックグラウンド処理 (保護されたアプリ) の独自の実装があります。ユーザー レポートから、Huawei の保護されたアプリと Android 6 のDozeモードで、私のアプリに例外があることを確認しました。アプリは正常に動作しますが、ディスプレイをオフにしてちょうど 15 分後に、アプリが接続された Android Wear ウォッチへのメッセージの送信を停止します。私のアプリは受信した通知の履歴も記録できますが、15 分経っても何も届きません... 電話のディスプレイがオンになってアプリが開かれるまで。その後、電話のディスプレイがオフのときに到着するはずだったすべての通知がNotificationListenerService
実装に到着し、一度に時計に送信されます。これは、記録された履歴でも確認されます。
これらの電話、特に Doze モードの Android 6 を搭載した Huawei Mate 8 でこれを修正する方法はありますか?
NotificationListenerService
デバイスが居眠りモードにあるときやアプリがスタンバイ モードにあるときの の正しい動作はどれですか?
編集
ユーザーは、バックグラウンド アプリとそのサービスにも影響を与える省電力モードになっていないことも確認しています。Nexusユーザーがこれを報告しておらず、私のOnePlus One with Mもこれを行っていないため、このバグはHuawei専用のようです. また、Nexus デバイスでは N プレビューが適切に機能します。
編集2
オプションのフォアグラウンド サービス ( startForeground()
) を追加したので、アプリの通知センターに永続的な通知が表示されるため、すべてのバッテリー最適化からアプリを除外する必要があります。フォアグラウンド サービス通知では、優先度を使用し、フラグNotificationCompat.PRIORITY_MIN
を追加しました。Notification.FLAG_ONGOING_EVENT
これは Huawei の携帯電話では少し役に立ちましたが、それほどではありませんでした。今ではNotificationListenerService
、アプリを開いた後ではなく、画面がオンになった直後に遅延通知が届きます。startForeground()
ライフサイクルを制御できないため、自分では使用しませんNotificationListenerService
が、別の方法では使用Service
します。
android - setAlarmClock() を使用しないマシュマロでの正確な繰り返しアラーム
あるアプリでは、バックグラウンドで 30 秒ごとにアクセル センサーの値を取得します。Android M で Doze モードが導入されたため、Doze モードでは を除くすべてのアラームが正確に機能しませんsetAlarmClock()
。ただしsetAlarmClock()
、短時間で Doze が無効になり、アラーム アイコンでユーザーを怒らせます。
setExactAndAllowWhileIdle()
正確に15分であるため、解決策ではありません。
Google Play サービスを使用すると、これを Fit API なしsetAlarmClock()
でアーカイブし、アクセル センサーの値を収集し、ユーザーの歩数をカウントできます (オフライン)。
android - 居眠りモードでアラームを見逃すアプリを修正する方法は?
一部のアプリ、特にメンテナンスされなくなったアプリは、マシュマロを搭載した Android デバイスが居眠りモードに入ると、重大な誤動作を引き起こします。将来的に特定のタスクを実行する目覚まし時計の代替またはスケジューラとして設計されたアプリは、もはや確実に機能しなくなり、その目的を完全に無効にします。
開発者にとって、または影響を受けるアプリがオープンソースである場合の回避策はよく知られています。
しかし、作成者がもはや保守していないクローズドソースのアプリをどのように修正できるのでしょうか?
ここで回答されているように、アプリのバッテリー最適化を無効にしても居眠りモードには役立たないことに注意してください。
android - Android N Doze モード - バックグラウンドでのダウンロードと処理を維持する方法は?
- Doze モード (Doze の第 1/第 2 レベル、メンテナンス ウィンドウの開始/終了時) にコールバックはありますか?
- ユーザーの承認に依存しない Doze モードを回避する方法はありますか?
- 以前のバージョン (Android M 以下) では、Android サービスと部分的な wake lock を使用して、アプリケーションがバックグラウンドにある間にデータをダウンロードして処理していました。Android N が居眠りモードになったときにバックグラウンドでデータをダウンロードして処理する方法はありますか?
android - Doze モードは、部分的/完全なウェイクロックの有無にかかわらず、バックグラウンド/フォアグラウンド サービスにどのように影響しますか?
これは簡単な質問です。G+ に関する巨大な投稿 (こちら) と、公式ドキュメント (こちら)に関する情報の欠如を見てください。
デバイスが「居眠り」モードになると、アプリのサービスはどうなりますか?
部分的/完全なウェイクロックの有無にかかわらず、バックグラウンド/フォアグラウンド サービス (バインド/アンバウンド、開始/未開始) に対して何をしますか?
たとえば、デバイスの画面がオフのときにオーディオ ストリームを再生するサービスを作成するにはどうしますか? オーディオ ストリームがローカル ファイルからではなく、ネットワークからのものである場合はどうなるでしょうか。
Google 開発者によるクレームがあったことを確認します。
フォアグラウンド サービスを実行しているアプリ (通知が関連付けられている) は、Doze によって制限されません。
-その後も多くの議論があり、これは完全に真実ではないと主張しています.特別なバックグラウンド操作アプリが何をすべきかを知るのはかなり混乱していると思います.
android - アプリがアプリ スタンバイ モードに入ったかどうかを検出する方法 (Android M+)
デバイスが DOZE IDLE または IDLE_MAINTENANCE モードの場合、「 android.os.action.DEVICE_IDLE_MODE_CHANGED 」のブロードキャスト レシーバーを登録すると、これらのイベントを受信できます。ただし、 adb コマンドを使用してアプリをアプリ スタンバイにする場合、このレシーバーは機能しません。Marshmallow 以降で実行されているデバイスのアプリがアプリ スタンバイ モードに移行したか、アプリ スタンバイ モードから終了したかをプログラムで確認することは可能ですか?
アプリをアプリ スタンバイにするために使用される adb コマンド
そして終了する