【发布时间】:2014-02-21 13:54:49
【问题描述】:
对于子活动更改父活动数据的情况,我无法找到最佳解决方案。
我有一个包含项目列表的活动 A。活动 A 启动活动 B 以向用户显示详细信息。用户可以运行操作并创建活动 C。活动 C 为活动 A 中的列表创建新元素。
数据保存在数据库中,因此传递数据没有问题。我只对通知感兴趣。
通知活动 A 数据已更改的最佳解决方案是什么?
目前我知道两种解决方案:
1) 活动 B 和 C 使用 startActivityForResult(..) 和 Extras 返回结果。结果将包含消息 "datachanged" -> true / false。
- 我不喜欢这个,因为我无法直接发送消息
2) 在恢复时始终刷新活动 A 中的数据。
- 这不是浪费处理吗?
3) 将 Intent 从活动 C 发送到活动 A(广播)
我发现的几乎可以肯定是错误的解决方案:
4) 以某种全局状态保存
- 没有全局状态(对吗?)。我们不应该这样做,因为有一个额外的抽象层(意图)。
5) 使用 getParent() 来使用父活动
- 父 Activity 可能会在返回时被销毁并重新创建
在活动之间没有其他一些更轻量级的消息系统吗? 活动服务通信中的Handler 和Messanger 之类的东西。也许不应该有,因为它违反了设计?
【问题讨论】:
标签: android android-intent android-activity