0

サーバーに接続し、プログラムが閉じられるまで接続を維持する必要があるAndroid OS用のソフトウェアを作成しています。接続はサービスとしてバックグラウンドで実行されており、Android でサービスを収集した限り、無期限に接続したままにする必要があります。

ただし、数時間後 (時間枠はランダムに表示されます)、明らかな理由もなくサービスが切断されますが、切断イベントは発生していないようです。サーバーは、接続されたデバイスに定期的にpingを送信します。これにより、サービスが存続すると考えられます。

違いがないように見えるWakeLocksと、機能しないように見えるstartForeground()を使用してみました。しばらくしてからアプリケーションを起動するために AlarmManager を使用しようとしていますが、これはちょっとした回避策のように感じます。誰か提案がありますか?または、明らかに見逃しているものはありますか?

事前にご協力いただきありがとうございます。

4

1 に答える 1

0

私がAndroidでサービスを収集した限り、無期限に接続したままにする必要があります。

それは一般的に正しくありません。

ただし、数時間後 (時間枠はランダムに表示されます)、明らかな理由もなくサービスが切断されますが、切断イベントは発生していないようです。

LogCat は、おそらくプロセスが終了したことを示します。

違いがないように見えるWakeLocksを使用してみました

電話がないとスリープ状態にWakeLockなるため、少なくとも WiFi を使用している場合は、アプリには a が不可欠です。私が理解しているように、開いている 3G ソケットのインバウンド パケットは自動的に電話を起動するはずですが、試したことはありません。

ただし、電話は「数時間」よりもはるかに早くスリープ状態になるはずなので、別の方法 (USB に接続するなど) でデバイスを起動させていると想定しています。

また、動作していないように見える startForeground()

これで、あなたが殺されるのを防ぐには十分だったはずです。Notificationもちろん、トレードオフはです。

于 2011-01-07T13:38:09.413 に答える