2011-10-21 18 views

答えて

0

あなたのアプリ独自のサービスであるにもかかわらず、BoundServiceを使用することをお勧めします。定義上、バインドされたサービスは、las接続が切断されると停止します。

もう1つの考え方は、アプリケーションオブジェクトでカウントを定義することです(グローバルアプリケーションオブジェクトをオーバーライドできます)。各onResumeでカウントを増やすことができ、各onPauseで減分することができます。

+0

最初のポイントをもっと説明できますか?私はサービスをアクティビティに限定していますが、アクティビティではなくアプリケーションが終了したらサービスを終了する必要があります。 – FrioneL

+0

はい、私は急いでいました。世界の数は私が恐れる解決策ではありません。 多分グローバルアプリケーションを完成させるでしょうか? – slkorolev

0
  1. あなたは最終的にはメイン機能に/しようと使用し、サービスは、最終的なブロックあなたはシャットダウン・コマンドを発行するオブジェクトのファイナライザを使用することができ

  2. でクリーンアップを行うことができます。ガベージコレクタは独自のペースで実行されるので、発生するタイミングは正確にわかりませんが、最終的に発生することはわかります。

1

あなたは、Androidがメモリからのアプリを掃除されたときに知っている(ただし、推奨されません)onDestroy()を使用して試みることができます。アクティビティがバックグラウンドでいつ送信されているかを知るためにonStop()を使用することもできます。
アクティビティスタックの最初のアクティビティでこれら2つのメソッドを実装します。

私はまだそれを試していないので、それが役立つかどうかを見てみましょう。

+0

なぜあなたはonDestroyをお勧めしませんでしたか? – FrioneL

+0

は、おそらくアクティビティがメモリから消去されている場合にのみ呼び出されるためです。これがいつ起こるかわからない場合があります –

-1

私は今、同じ問題を解決しています。アイデアがあり、それを実装します: 1.static変数(String currentShownActivity)が呼び出されました。 2.すべてのアクティビティ(onResume())で、変数にアクティビティ名を入力します)。だから私は、アクティビティの間を移動するとき、currentShownActivity変数が変更され、現在のアクティビティ名を持ちます。 3. onPause()ごとにonPause()アクティビティを呼び出す(つまりブール値IsPauseCalled) 4.in onStop()にIsPauseCalledとアクティビティ名をチェックするフラグを設定します。 アクティビティonPauseが呼び出され、currentShownActivityの名前が変更されていない場合(アクティビティは「アクティビティなし」のままです)、その[ホーム]キーが押されたことを意味します。

アプリケーションを知る統合方法が実行されていません。メインアクティビティのonDestroyを確認してください。

関連する問題