0

複数のフラグメントを持つActionBarタブを使用しています。各フラグメントには、私のタイマーサービスに基づくタイマーが含まれています。最初のタイマーを停止すると(タイマーサービスを停止すると)、2番目のタイマーも停止します。これは、同じサービスを実行しているためだと思います。

別のフラグメントがサービスを使用しているかどうかを区別したり、タイマーごとに個別のサービスを開始したりすることは可能ですか?それとも別の方法がありますか?

私はしばらくの間解決策を探していました、私は今少し迷っています。

4

1 に答える 1

0

コードを見ずに:メソッドstartServiceを呼び出すと、サービスが実行されていないonStartCommand場合はサービスが開始され、サービスがすでに開始されている場合は呼び出されます。startServiceタイマーが開始すると、値(たとえばint、ライブタイマーを表す値)を呼び出してインクリメントできます。タイマーを停止/終了する必要がある場合はBroadcastReceiverService(表示したリンクのように)を実装して、他のコンポーネントからの「クローズ」ブロードキャストをリッスンできます(このパターンを使用しServiceて、新しいタイマーを通知できます)開始しました(「開始」ブロードキャスト))。

その中でBroadcastReceiverServiceライブタイマーのカウントをデクリメントして、にいるかどうかを確認します。0その場合は、を停止しServiceます。

上記のアプローチの主な問題はService、他のアクティビティが強制終了されて再起動されない場合でも、必要なタイマークローズインテントをブロードキャストできない場合でも、いつ確実に閉じるかです(他のアクティビティが強制終了されて再起動されない場合、サービスはいくつかの登録済みタイマーが残っているので、サービスを無期限に実行したくないでしょう)。これを解決するには、実際のコードに関する詳細が必要になります。

于 2012-08-10T13:21:15.407 に答える