1

私のアプリケーションには、サーバーにデータを照会するサービスがあります。このサービスは、構成可能なx分ごとにサーバーにクエリを実行します。USBケーブルに接続してアプリケーションを実行すると、

timer.schedule(new MyTimerTask(), delayInSec, TimeUnit.SECONDS);

完璧に動作します。しかし、デバイスがUSB(コンピューター)に接続されていない場合、デバイスは停止しました。

デバイスがUSBに再接続されると、動作に戻ります。

どうすれば解決できますか?

ありがとう、Eyal。

4

1 に答える 1

1

どのように解決できますか?

ステップ #1: 既存のScheduledExecutorService実装を削除します。

ステップ #2: を使用AlarmManagerしてスケジュールされた作業をセットアップし、 によって作業が実装されるWakefulIntentServiceようにします。これにより、デバイスは作業を実行するために起動し、作業を完了するのに十分な時間待機し、完了したらスリープに戻ります (そしてサービスはジョブの合間にシャットダウンするため、ユーザーの RAM を常に占有することはありません)。

于 2012-04-15T13:53:54.247 に答える