2010-02-17 113 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