在数据/模型更改时通知视图/活动

时间:2012-01-02 18:24:19

标签: java android callback android-activity

我有一个活动A,活动B和一个对象C.我需要从活动A开始活动B,并且在开始时我需要对象C来查找用户位置,一旦它可用,活动B必须通过位置对象通知

我不确定Object C如何通知Activity B,因为android dosent允许获取Activity References。

3 个答案:

答案 0 :(得分:1)

考虑实施Bound Service。您的位置信息可以在此服务中获取(当然,在另一个线程上),并在活动B绑定到服务时检索。

答案 1 :(得分:0)

创建一个AsyncTask,它将在后台找到用户位置。

完成后,您可以更新UI或向用户创建通知。

答案 2 :(得分:0)

使用Java Observer和Observable类。
通过在数据对象(模型)上扩展Observable类,您可以分配监听所述数据模型中的更改的Observers。当数据发生更改时,将自动通知Observer并触发其update()方法。

update()方法是放置代码以刷新受数据更改影响的视图的明显位置,这是视图和数据模型之间的链接发生的位置(通常在Android活动中)。使用Observer和Observable类的好处在于数据模型,视图和控制器(更新视图的Activity)都是分开的。也就是说,您可以将数据模型用于您想要的任何内容,如果您更改视图,它将不会破坏数据模型,反之亦然。这使您的应用程序更容易理解,并且在以后更容易更新。

这是一个简单的代码示例:http://www.ootpapps.com/eclipse_projects/ObserverExample.zip