【问题标题】:Notifying view/activity when the data/model changes数据/模型更改时通知视图/活动
【发布时间】:2012-01-02 18:24:18
【问题描述】:
我有一个 Activity A、Activity B 和一个对象 C。我需要从 Activity A 启动 Activity B,在启动时我需要对象 C 来查找用户位置,一旦它可用,必须使用 location 对象通知 Activity B .
我不确定对象 C 如何通知 Activity B,因为 android dosent 允许获取 Activity 引用。
【问题讨论】:
标签:
java
android
callback
android-activity
【解决方案1】:
考虑实施Bound Service。您的位置信息可以在此服务中获取(当然是在另一个线程上),并在绑定到服务时在 Activity B 中检索。
【解决方案2】:
创建一个在后台查找用户位置的 AsyncTask。
完成后,您可以更新 UI 或创建通知给用户。
【解决方案3】:
使用 Java Observer 和 Observable 类。
通过在数据对象(模型)上扩展 Observable 类,您可以分配观察者来监听所述数据模型中的变化。当数据发生变化时,Observer 会自动收到通知并触发其update() 方法。
update() 方法是放置代码的明显位置,该代码会刷新受数据更改影响的视图,这是视图和数据模型之间发生链接的地方(通常在 Android Activity 中)。使用 Observer 和 Observable 类的好处在于数据模型、视图和控制器(更新视图的 Activity)都是分开的。也就是说,您可以根据需要使用数据模型,如果您更改视图,它不会破坏数据模型,反之亦然。这使您的应用更易于理解,并且以后更易于更新。
下面是简单的代码示例:http://www.ootpapps.com/eclipse_projects/ObserverExample.zip