2012-03-26 1 views
0

私はここで私の知識に少しのギャップがあります、私はすべての間違ったコードを書く前にそれを行うことを確認したいと思います。Androidのアプリケーションからアクティビティへイベントを渡すにはどうすればよいですか?

には、TCPクライアント用のいくつかのコア機能を設定するためのAndroidアプリがあります。 アプリケーションと対話しなければならないいくつかの異なる活動画面があります。私が悩んでいるのは、データパケットがアプリケーションで受信されたときにどうするかです。現在表示されているアクティビティにそれを中継したいと思います。 C#の背景から来る

は、私はちょうどアプリケーションでイベントを作成し、活動が作成されたときに、単にそのイベントをサブスクライブしたいです。しかし、私は、Javaのリスナーとハンドラを混乱よ、...

はそのことについてに行くための最善の方法は何ですか?代わりに私はサービスをしなければならないのですか? (ただし、アプリケーションが表示されていないときにTCP接続が強制終了されるかどうかは気にしません)

答えて

1

私はLocalBroadcastManagerdocumentation)のアプローチになります。

Applicationクラスの子犬の1つを作成し、ActivityオブジェクトをonStartonStopに登録/登録解除してください。 Context.registerReceiverを参照してください。これにはIntentを使用する必要があることに注意してください。データのパッキング/アンパックは雑然とできます。

また、あなたはそれを行うために、任意の特定のアンドロイドクラスを使用する必要はありません - ちょうどあなたのプログラムは、あなたのonStartApplicationonStopへの呼び出しによってであるものActivityを追跡します。関心のあるすべてのアクティビティをActivityのサブクラスに拡張すると、このロジックを含むコードを整理できます。

+0

私はあなたの2番目のアイデアはおそらくこれには問題ないと思います。 Context変数に「現在の」アクティビティのハンドルを格納し、データがあるときにそのコンテキストのHandlerを呼び出すことはできますか?それらは正しい言葉ですか? – Adamlive

+0

あなたがバックグラウンドサービス(例えば 'Activity.runOnUiThread')から来る場合は特に、役に立つかもしれないカップルより多くのメソッドへのアクセス権を持っているように私は、さらに一歩進み、' Activity'として保存したいです。そうすれば、 'Handler'は必要ありません。 – sastraxi

+0

すでにチャンピオンのように働いています。提案されているようにrunOnUiThreadを使用する。ありがとう! – Adamlive

関連する問題