1

短いバージョン: Android は電話を再起動 (文字通り再起動) して、フォアグラウンド サービスを削除しますか? もしそうなら、どのような場合に?

長いバージョン: 私はフォアグラウンド サービスとして登録する GPS サービスを作成しました (この場合、これは良い考えです。これを実行すると、携帯電話で最も重要なものになります ;))。テスト中、このサービスは大量のリソースを消費します。GPS データを毎秒取得し、SD カードの SQLite DB ファイルに書き込みます。後で内部メモリを使用してポーリング時間を長くしますが、今はテスト データが必要です。

サービスは意図したとおりに機能します。開始および停止するアクティビティを作成しましたが、結果は問題ないようです。しかし、それを実行し続けると、しばらくすると(30分ほどで)電話が再起動しました。通常の使用ではこれに気付かなかったので、これは私のサービスによるものです。ただし、何が原因なのかわかりません。CPU のウェイクロックを要求する必要がありますか? (これが問題である場合、電話はただシャットダウンしませんか?) メモリが足りなくなりましたか? 電池を使いすぎた?(半分いっぱいでした)電話が再起動した理由を確認できるログはありますか?

環境:Xperia X10、Android 2.3.3。

4

3 に答える 3

3

他の人が言ったように、Android はフォアグラウンド サービスを取り除くために電話を再起動しません。私が遭遇した最も一般的な理由は次のとおりです。

  • ドライバのエラーやメモリ破損などによるカーネルパニック
  • Watchdogデッドロックのためにメインスレッドを強制終了し、これにより がZygote再起動します。これは、ユーザーから見れば再起動に似ています。

詳細やログがなければ、推測しかありません。それでもService、多くのリソースを消費したため、WatchdogオンSystemServerスレッドが呼び出され、再起動する可能性があるようです。

于 2012-05-29T11:57:25.433 に答える
2

私の知る限り、いいえ。これは、ユーザーにとって過度に厳しいものです。OS が他のサービスのようにプロセスを終了するのを何らかの形で妨げるフォアグラウンド サービスについては何もありません。

私の推測では、デバイスのファームウェアのバグにつまずいていると思われます。

于 2012-05-29T11:49:58.463 に答える
0

Android ドキュメントから取得:

フォアグラウンド サービスは、ユーザーが積極的に認識しているものと見なされるサービスであるため、メモリが不足しているときにシステムが強制終了する候補にはなりません。

于 2012-09-28T13:13:05.540 に答える