我已经读过,前台活动尝试在后台传递/操作活动是不好的做法,通常应该使用onResume函数。
所以我有一个活动可以让用户添加“最喜欢的”东西。还有另一个活动显示所有受欢迎的事物的列表。我没有每次在onResume上查询数据库和重建列表,而是使用一个只有“favorites_updated”等静态标志的类,如果它是真的,onResume我们会做额外的工作 - 如果它是假的,我们就不会打扰。 / p>
这感觉有点笨拙 - 有没有更成熟的方式来做这样的事情?
TYIA。
答案 0 :(得分:0)
如果您始终从ListActivity导航 - > FavoritesActivity,您可以使用
从ListActivity启动FavoritesActivitystartActivityForResult (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寻求帮助。