0

インターネットサーバーに接続されているAndroidサービスを実装しています。サービスは、サービスの開始時にセッションを作成し、定期的にサーバーにメッセージを送信し、サービスが閉じられると、最終的にサーバーからセッションを削除します。

アプリケーションからのサービスの開始と停止は正常に機能し、onCreate、onStartCommand、および onDestroy() が呼び出されます。UI/アクティビティに接続せずにサービスを実行できるとよいのですが。これにより、起動時に開始できるようになります。

ただし、Androidランチャーからアクティビティを閉じると、サービスではなく、アクティビティのonDestroyのみが呼び出されます。START_STICKY を使用すると、システムはサービスを再起動し、onCreate、onStartCommand をもう一度呼び出します。

では、サーバーに「ログアウト」を送信できるように、サービスが最初に閉じられたことをどのように検出すればよいでしょうか? または、再起動を検出して、もう一度「ログイン」しないようにしますか?

サービスが開始されたかどうか(ユーザーがログインしたかどうか)を追跡するために静的ブール値を使用しようとしましたが、サービスが再起動されるとfalseにリセットされるようです

4

1 に答える 1

0

内部のコードが実行されている場合onCreate、サービスは実行されており、役に立ち&& !sIsServiceRunningません。onDestroy()が呼び出されることが保証されていないため、システムはサービスに警告せずにプロセスを強制終了する可能性があります。

于 2013-01-14T11:27:19.550 に答える