こんにちは、状況:
スポーツトラッカー/ナビゲーションアプリとして機能するAndroidアプリケーションを開発しているため、GPSへの永続的な接続と、永続的な起動デバイスが必要です。記録は毎秒行われます。
wakelocks
現在のソリューションが何年も機能しているのは、デバイスを起動し続けるおかげです。
Android 6.0 以降の Doze モードは状況を複雑にしますが、この場合ではありません。
Huawei デバイスでは、おそらく異なるタイプの最適化です。
ログの一部を次に示します。
10-10 10:33:18.462 1014-384 D/PFW.HwPFWAppWakeLockPolicy: getUidWakeLock uid: 10097 wakelock >= 10 mins
10-10 10:33:18.543 1014-384 D/PFW.HwPFWAppWakeLockPolicy: force stop abnormal wakelock app uid: 10097
10-10 10:33:18.558 1014-384 I/ActivityManager: Force stopping menion.android.locus appid=10097 user=0: from pid 1014
だから約後。30分以上、システムはアプリの使用量が多すぎると判断しwakelocks
、すべてのサービス、履歴、単純にkill
.
この動作の経験と提案、この単純なタスク (画面がオフのときの GPS 位置の永続的な記録) を改善するにはどうすればよいですか?
最初に書いたように、新しい Huawei を除く他のすべてのデバイスでは、このようなシステムは何年もの間正しく動作します。
編集: 1 人のユーザー (削除された?) のコメントの後に注意してください。Huawei バッテリー マネージャーの「ホワイトリスト」アプリ (「保護されたアプリケーション」としてマーク) は、この問題には影響しません。