2012-03-06 79 views
3

我的Android應用程序使用其Application類(準確地說它的Application子類)運行線程以從網站檢索數據。一旦它成功完成,它應該將這些數據提供給正在運行的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在Intent發送數據。
但您也可以將其存儲在數據庫中,並通過廣播讓活動知道有新的數據可用

+0

從他們的描述來看,這聽起來像是一個本地應用程序廣播會更合適:Intent i = new Intent(TEST_ACTION); LocalBroadcastManager.getInstance(context).sendBroadcast(i); – JDJ 2014-06-10 10:55:14

0

如果您要將這些數據存儲到內容提供者(您應該假設數據不是很小),那麼您可以在內容提供者上註冊一個內容觀察者。觸發器應該由活動處理。看here

+0

我剛剛讀到「如果您不需要開發自己的提供程序打算與Google其他應用程序分享您的數據「,這些內容來自Google關於內容提供商的文檔。如果我不需要與其他應用程序共享我的數據,sqlLite是否具有與內容觀察者相媲美的特性? – user3331142 2016-05-05 16:18:56

+0

應用程序對象也是在任何應用程序中被銷燬的最後一個對象。 – sgupta 2017-06-08 17:47:48

0

這是非常糟糕的做法,因爲你永遠不知道應用程序對象何時被銷燬。我建議使用服務。閱讀Android開發人員!

+0

爲什麼選擇服務?如果您只需要在用戶使用應用程序時獲取數據,那麼使用服務有點過分了嗎? – user3331142 2016-05-05 16:16:06

相關問題