2017-07-19 1 views
-2

ユーザが複数のタイマーを作成できるようにしたい。これらのタイマーは同時に実行できる必要があり、アクティビティーが破棄された場合に実行できるはずです。問題は、どちらのタイプのサービスも私が探しているものを達成することができるように見えないので、これを実装する方法を本当に知りません。開始されたサービスは、アクティビティが破棄された後でもアクティビティのバックグラウンドで実行できます。しかし、Started Servicesには、有界サービスで利用可能なクライアントサーバーの側面がありません。ただし、バインドされたサービスは呼び出し元のコンポーネント(アクティビティ)に大きく依存しています。サービスの結果をアクティビティに出力したい。私のニーズに合ったサービスはどれですか?タイマーのアクティビティを使い切れるようにする

また、複数のタイマーを実行できる必要があります。私の最初の計画は、各タイマー用に新しいスレッドを作成し、次にスレッド間で切り替えて特定のタイマーを表示することでした。しかし、テストプログラムの1つで、アクティビティが壊れた(有界サービスを使用して)と、スレッドIDが変更され、新しいスレッドがプログラムを実行していることがわかりました。私はこの結論を下すのが正しいのですか?複数のタイマーを実行する場合、適切な道を選んでいますか?どんな洞察も役に立ちます。

+0

[this](https://developer.android.com/training/scheduling/alarms.html)と[this](https://developer.android.com/reference/android/app/AlarmManager)を参照してください。 html)。 –

答えて

1

私はなぜあなたの質問がdownvotedされたか分からない。

コメントに示されている解決策だけではありません。あなたのイベントをどのくらい頻繁にやりたいか、どれくらい長くしたいかによって決まります。

  1. フォアグラウンドサービスを使用できます。

  2. アプリケーションクラスにタイマーを入れることができます。

  3. アプリケーションクラスとインターフェイスを使用して、アクティビティとサービス間のバインドを簡単に作成できます。

  4. メッセージを送信できます。

  5. AlarmManagerを使用できます。 (コメントと最も一般的な)

  6. カスタムシングルトンを使用できます。フォアグラウンドと、この記事を読んで結合の両方を使用する

EDIT

https://stackoverflow.com/a/7041427/1979882

しかし、私は、アプリケーションクラスにストレージを経由してacvitiyやサービスのインスタンスを通信することをお勧め。

+0

建設的なコメントVyacheslavをありがとう。アクティビティがまだ生きているかどうかによって、バインドされたサービスとフォアグラウンドのサービスを切り替えることは可能ですか? – Czar

+0

@Czar私は答えを – Vyacheslav

+0

更新しました。ありがとうございましたVyacheslav – Czar

関連する問題