2010-02-17 115 views
2

假設我有一個活動是一個列表。當此活動啓動時它會調用服務。該服務將執行後臺操作 - 下載,解析並填寫列表。服務如何與其活動通信?服務如何調用啓動該服務的活動中的方法?

我的問題是:服務如何與活動通信? 如何從服務中調用活動中的方法? (我是新來的OOP)

服務啓動這樣的:

hello_service = new Intent(this, HelloService.class); 
startService(hello_service); 

我的一個服務做的事情就是下載和分析XML。之後,它需要填寫一個列表!所以,我想將解析的內容傳遞迴Activity,然後在Activity中調用一個方法來填充該列表。

回答

0

您可以將活動對象設置爲服務並從服務調用您的活動的方法。但是當你更新你的UI時,你必須關心線程安全。

希望這會有所幫助! Tutorial

+0

「將活動對象設置爲服務」是什麼意思? – TIMEX 2010-02-17 17:50:47

+0

在服務中,您可以像下面這樣創建靜態方法: public static void setMainActivity(YourActivityType activity){ YOUR_ACTIVITY = activity; } 然後,在調用startService()方法之前,只需從您的活動調用YourService.setMainActivity(this)。 – 2010-02-17 23:05:39

+0

謝謝。它意義重大。但是線程安全呢?爲什麼這不安全? – TIMEX 2010-02-18 00:59:42