通知活动需要进行更新

时间:2011-12-07 13:00:12

标签: android

我已经读过,前台活动尝试在后台传递/操作活动是不好的做法,通常应该使用onResume函数。

所以我有一个活动可以让用户添加“最喜欢的”东西。还有另一个活动显示所有受欢迎的事物的列表。我没有每次在onResume上查询数据库和重建列表,而是使用一个只有“favorites_updated”等静态标志的类,如果它是真的,onResume我们会做额外的工作 - 如果它是假的,我们就不会打扰。 / p>

这感觉有点笨拙 - 有没有更成熟的方式来做这样的事情?

TYIA。

4 个答案:

答案 0 :(得分:0)

如果您始终从ListActivity导航 - > FavoritesActivity,您可以使用

从ListActivity启动FavoritesActivity
startActivityForResult (Intent intent, int requestCode) .

如果用户更改了收藏夹,请使用

将布尔“更新”传回
 setResult (int resultCode, Intent data) 

然后在ListActivites

中检索它
 onActivityResult(int requestCode, int resultCode, Intent data) 

如果布尔值为true,则重新查询光标。

另一种选择是更新您在FavoritesActivity中编写的SharedPreference,然后在ListActivity中读取(非常类似于静态变量)。

答案 1 :(得分:0)

您还可以在后台活动中为收藏夹列表中的更改创建一个列表,并在更改后通知您的后台活动。

这种方法有一个优点,因为onResume中没有代码有很多变化。

答案 2 :(得分:0)

我在启动活动时使用get / putExtras在Intent中传递其他参数。但是,由于当前的问题更多的是关于在活动之间保持持久状态,而不是关于消息传递,我将+1共享首选项,而不是静态变量。

http://developer.android.com/guide/topics/data/data-storage.html#pref http://www.balistupa.com/blog/2009/08/passing-data-or-parameter-to-another-activity-android/

答案 3 :(得分:0)

使用方法notifyChage(params)创建一个Listner,说FavoriteChangeListner。然后在您希望实现更改的Activity中实现此列表器。之后注册到列表器和子活动时需要在父活动上调用notifyChage(params)。我会尽快发布代码。请通过this寻求帮助。