android-cn / android-discuss

Android 问题交流讨论坛, 微信公众号:codekk, 网站:
https://github.com/android-cn/android-discuss/issues
Apache License 2.0
4.08k stars 536 forks source link

怎么做到多个Activity页面之间的数据互相监听,相应改变数据 #163

Open 120660021 opened 9 years ago

120660021 commented 9 years ago

请教各位大神,需求是这样的 ,比如有4个界面,每个界面都有一个共同的属性,比如是【是否支付】:但是每个界面都是不同接口请求到的数据,而不是通过第一个Activity传递Intent带Bundle过来的,最后一个界面是支付界面,当支付成功后,按返回键,回到之前的界面,其支付状态也相应的改变成已支付,期间不能重新调用接口请求数据。 希望各位大神指点。谢谢

chriszeng87 commented 9 years ago

不知道我有没有理解对,感觉做个本地缓存就可以满足你的需求了

l123456789jy commented 9 years ago

做个标记就行了!支付成功了!改变下!

dunwen commented 9 years ago

楼上说的本地缓存可以,,我第一反应想到的是用一个广播,,,

XepherJin commented 9 years ago

我的第一反应是单例保存。。。

leonlbh4 commented 9 years ago

应用内广播呗

120660021 commented 9 years ago

感谢 已经解决

feicien commented 9 years ago

可以使用广播,或者使用 EventBus

kswOok commented 9 years ago

EventBus 就可以。简单易通

lemonyh commented 9 years ago

观察者设计模式应该是比较好的解决方式

atearsan commented 9 years ago

本地缓存标记就好了. 因为是不同的页面, 不需要实时更新.

120660021 commented 9 years ago

EventBus 完美解决了这个问题

120660021 commented 9 years ago

感谢各位热心回答的朋友

Lujango commented 9 years ago

mark

caowen commented 9 years ago

EventBus 推荐

lizhangqu commented 9 years ago

EventBus

zhitaocai commented 9 years ago

建议采用:Android support v4 包里面提供的 LocalBroadcastManager 理由:能用官方包解决的问题不要绕路

Olaman commented 9 years ago

broadcast 太麻烦。 还是用otto 或者 eventbus。 otto 有Android studio 插件, 比较方便查找

PoarryScript commented 9 years ago

otto eventbus我都是第一次听说,原谅我的无知,你们呢都是通过什么渠道知道这些好用的控件或者集成包呢? @Olaman

jovezhougang commented 9 years ago

這个简单 发个 sendStickyBroadcast或者本地保存(原因是 你在前面操作 你不能保证不可见的Activity被系统回收)

tclock commented 9 years ago

SharedPreferences 的onSharedPreferenceChanged方法 监听

kyleinfo commented 9 years ago

@tclock , otto eventBus 等事件框架,还有观察者模式、android 自带的本地广播都可以做到。将数据写入 SharedPreferences 然后用 onSharedPreferenceChanged 方法监听这种方式也可以做到,只不过数据多了的话有性能问题,而且 onSharedPreferenceChanged 在有些时候是不会被调用的,而且会暴露数据不利于封装和防破解

tclock commented 9 years ago

@kyleinfo 嗯 ,数据多的话是会有性能问题,不过以前我有个项目用这种方式暂时还没遇到不会调用的问题,那个时候项目没有用事件总线,现在用otto了,就不用这种监听的方式了

Olaman commented 8 years ago

@PoarryScript https://github.com/Trinea/android-open-project