2017-05-26 14 views
0

ユーザーがアプリを開いてすぐにアクティビティAに行くシナリオを考えてみましょう。 OnCreateメソッドは、バックグラウンドで実行されるサービスを作成します。バックグラウンドサービスからバックグラウンドで現在のアクティビティへのデータの送信

this.StartService(new Intent(this, typeof(MyService))); 

このサービスは、独立して活動から実行されるので、ユーザは、閉じたりアプリを破壊した場合、サービスがまだ実行されています。 活動で

私は何かが私のバックグラウンドサービスで発生したときに、私は活動は、ブロードキャストを送信経由で更新し、RegisterReceiver経由カップルのレシーバを登録

私が直面している問題は、ユーザーがアクティビティAからアクティビティBになるときです。この時点で、サービスはアクティビティAで変更が必要なブロードキャストを送信していますが、フォアグラウンドではないため、受信者から更新されません。したがって、ユーザがアクティビティAからアクティビティBに戻ると、ユーザは古いデータを見ることになります。そして、サービスは不規則な間隔でこれらの更新を行います。

バックグラウンドでフォアグラウンドに移動したアクティビティを更新する適切な方法は何ですか?アクティビティのサービス参照またはデータを保持する適切な方法は何ですか?

バインドされたサービスを使用するかどうか分かっているので、アプリが強制終了されると破棄されます。私はそれを望んでいません。すべてのチュートリアルでは、フォアグラウンドにあるアクティビティを更新する方法のみを示しています。

私はちょうどアンドロイドを知るようになっています。だから、私はいくつかの明白な細部が欠けているかもしれません。

+0

あなたの問題を解決するフォアグラウンドにいる場合にのみ、あなたの活動にブロードキャストを送信できます。 –

+0

@Sandeepdhimanしかし、これらのアップデートをどうやって求めますか?サービスは不規則な間隔で最新のデータをブロードキャストで送信しています - 次回のアップデートは5分後になる可能性がありますので、次回のアップデートまでユーザーがデータを中継しないようにしてください –

+0

https://stackoverflow.com/questions/2282435/放送活動からのインフォメーション・アクティビティ・イン・ザ・フォア・イン・ザ・フォアグランド –

答えて

0
  1. あなたは、データベース内のデータを持続または
  2. を提出することができますが、更新されたデータ
0

を取得するためにサービスを再起動することができますあなたはContext#sendStickyBroadcastを使用することができます。廃止されましたが、まだ動作しています。あなたの活動は、前景になると、そのような放送を得るでしょう。入手した後にContext#removeStickyBroadcastを忘れないでください。

関連する問題