5

アプリをしばらく (前回は最大 9 時間) 実行したままにしておくと、電話のアクティビティが応答を停止し、強制的に閉じる必要があります。その後、スライド ダウン通知領域の下に黒い画面が表示され、[戻る] または [ホーム] の変更を押すだけです。なし。電話をオフにしようとすると無限に回転するだけなので、通常は電話をオフにすることもできません。バッテリーを取り外して再挿入する必要があります。

私のアプリには、Bluetooth デバイスを監視し、30 秒のタイムアウトで受け入れスレッドを実行するバックグラウンド サービスがあります。デバッグ画面に表示されるのは 1 つだけなので、適切に処理していると思います。デバイスがずっと接続されていて、まったく接続されていないときに、この電話のフリーズ動作を見てきました。

電話をlogcatに接続したままにして、電話がフリーズしたときに何が起こるかを確認しましたが、しばらくすると、電話からの更新の受信が常に停止します。せいぜい1時間か2時間ですか?私は通常、待っている間に何か他のことをしているので、推定するのは難しい.

これを引き起こしている可能性のあるもの、または追加のフィードバックを取得する方法についてのヒントはありますか?

4

1 に答える 1

1

サービスがバックグラウンドで実行されている場合、しばらくすると OS によって強制終了される可能性があるため、サービス内でサービスを処理する方法を知っておく必要があります。

多くの作業を行うサービスは、殺される良い候補になります。

サービスに長時間の作業をさせたい場合 (30 秒はかなり長い時間です)、サービスをフォアグラウンド サービスとして設定し、通知を送信する必要があります。

サービスをフォアグラウンド サービスにしたくない場合は、強制終了されたときに状態を回復し、コードをさらに最適化してください。

Android でのサービスの実行方法の詳細については、このリンクを参照してください 。

于 2012-08-18T23:00:54.697 に答える