Android 与父活动的通信,刷新父活动
对于子活动更改父活动数据的情况,我无法找到最佳解决方案 我有一个包含项目列表的活动A。活动A启动活动B向用户显示详细信息。用户可以运行操作并创建活动C。活动C为活动A中的列表创建新元素 数据保存在数据库中,因此传递数据没有问题。我只对通知感兴趣 通知活动A数据已更改的最佳解决方案是什么? 目前我了解到两种解决方案: 1) 按活动B和C返回结果,其中包含Android 与父活动的通信,刷新父活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,对于子活动更改父活动数据的情况,我无法找到最佳解决方案 我有一个包含项目列表的活动A。活动A启动活动B向用户显示详细信息。用户可以运行操作并创建活动C。活动C为活动A中的列表创建新元素 数据保存在数据库中,因此传递数据没有问题。我只对通知感兴趣 通知活动A数据已更改的最佳解决方案是什么? 目前我了解到两种解决方案: 1) 按活动B和C返回结果,其中包含startActivityForResult(..)和Extras。结果将包含消息“datachanged”->true/false 我不喜欢这
startActivityForResult(..)
和Extras
。结果将包含消息“datachanged”->true/false
- 我不喜欢这个,因为我不能直接发送消息
- 这不是在浪费加工吗
- 没有全球国家(我说得对吗?)。我们不应该这样做,因为有一个额外的抽象层(intents)
- 返回时,可以销毁并重新创建父活动
活动之间没有其他更轻的messanger系统吗?类似于活动服务通信中的
Handler
和messanger
。也许不应该有,因为这违反了设计?通过B和C发送带有startActivityForResult的消息是最好的方法。另一种选择是使用广播或本地广播,以便将通知/事件从C发送到A
它将看起来像:
1.活动A在onCreate中加载数据
2.您可以使用本地广播而不是广播。优点:更好的性能和安全性(你的意图永远不会离开你的应用程序)。这一条说广播接收器应该在
onPause()中注销。
。所以看起来我不应该在活动处于后台时使用广播。因为你想让你的接收器在活动处于后台时运行——你应该像android文档中所说的那样,将其视为bg线程/长时间运行的操作。我同意在大多数情况下,接收机将在onPause取消注册,但您的情况有点不同,所以请随意使用广播接收机,享受更好的性能和灵活性。是的,您是对的。即使我不注销receiver,我也不会获取事件,因为生成它们的是我,而不是其他应用程序或系统服务。