2012-03-06 7 views
3

私のAndroidアプリは、Applicationクラス(正確にはApplicationサブクラス)を使ってスレッドを実行して、Webサイトからデータを取得します。それが正常に実行されると、このデータを実行中のActivity(私のアプリには2つのアクティビティがあります)に与えるはずです。これについてActivityにどうすれば通知できますか?現在のActivityに、取得して提示する必要がある新しい利用可能なデータがあることをどのように伝えることができますか? あなたの答えをありがとう。アプリケーションを現在のアクティビティと通信させる

答えて

2

ブロードキャストシステムはどうですか?

あなたはその後、独自のカスタム放送送信することができますgetApplicationContext(); を使用して、アプリケーションクラスにコンテキストを取得できます。そして、あなたが放送を受信するために、あなたの活動の中で放送受信機を実装することができます

Intent i = new Intent(); 
i.setAction("your.package.customintent.TEST"); 
context.sendBroadcast(i); 

を。 詳細情報:http://thinkandroid.wordpress.com/2010/02/02/custom-intents-and-broadcasting-with-receivers/

送信するデータをputExtraを使用して設定することができます。
でもデータベースに保存することができます。ブロードキャストを使用することで、新しいデータがあることをアクティビティに知らせることができます。

+0

彼らの説明から、それはローカルアプリケーションのように聞こえますより適切な放送:インテントi =新しいインテント(TEST_ACTION); LocalBroadcastManager.getInstance(context).sendBroadcast(i); – JDJ

0

このデータをコンテンツプロバイダに保存する場合(データがそれほど小さくないと仮定して)、コンテンツプロバイダにコンテンツオブザーバを登録できます。トリガは、アクティビティによって処理される必要があります。 Look here

+0

私はちょうど "あなたは自分のプロバイダを開発する必要はありませんGoogleのコンテンツプロバイダに関するドキュメントから、他のアプリケーションとデータを共有しようとしています。私のデータを別のアプリケーションと共有する必要がない場合、sqlLiteにはコンテンツオブザーバと同等のものがありますか? – user3331142

+0

また、アプリケーションオブジェクトは、どのアプリケーションでも最後に破棄されます。 – sgupta

0

これは、アプリケーションオブジェクトがいつ破棄されるかわからないので、非常に悪いことです。代わりにサービスを使用することをお勧めします。 Android開発者にそれを読んでください!

+0

なぜサービスですか?ユーザーがアプリケーションを使用している間にデータを取得するだけでよい場合は、サービスを使用するのに少し余裕がありますか? – user3331142

関連する問題