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

[问答]通知页面刷新有什么办法 #627

Open MaYunFei opened 7 years ago

MaYunFei commented 7 years ago

之前页面刷新用的 EventBus,后来用 Rxjava 大家推荐用 RxBus 我其实就是想要个 登录后提醒页面刷新,我想直接在 appcontext中设置标记,那个页面需要刷新就创建一个标记,登录成功后设置需要刷新,然后 在每个页面 onResume方法中去判断是否刷新,大家有什么好的想法

catroom commented 7 years ago

通知的方法有广播,eventbus rxbus。你想问的是在onresume是不是太繁杂是吧。我猜你的app有游客模式还有登录模式是吧。那么的确也只能这样啦,接收到登录模式更新UI。还有其他办法????

MaYunFei commented 7 years ago

@catroom 我个人觉得广播可能有点费电,EvetBus RxBus 得记得注册释放,这个如果忘记了很容易产生问题,所以我想着就在 onResume 中通过全局变量设置,还有一点我只是通知刷新,不需要传递数据

diov commented 7 years ago

可以使用 LocalBroadcast 的方式,同样需要注册和释放。 广播只在应用内分发,便于控制。而且即时释放也不会有什么问题。

catroom commented 7 years ago

@MaYunFei 恩,当然考虑性能的话可以用eventbus和rxbus(虽然我没测试过)、 @diov 你知道LocalBroadcast 最大的问题是什么吗,他不能系统的变化,例如WiFi和sim卡。假如你在一个actcity注册广播,只能选择全局。。其实这个本地广播功能非常鸡肋,只适用于本地。不能混杂、、、

diov commented 7 years ago

@catroom ???如果你希望监听系统的变化为什么不使用 BroadcastReceiver?LocalBroadcast 本来就是为了解决 BroadcastReceiver 的问题而开发的,使用场景完全不同。 而且在这个问题里面完全是可以通过 LocalBroadcast 来实现。因为不需要传递数据,也就不需要仅仅为了这么一个简单的业务引入 eventbus 和 rxbus 这样的类库。

catroom commented 7 years ago

@diov 只是想说local很鸡肋,之前我做过。假如你一个页面想监听系统又想监听自定义的,但是BroadcastReceiver不是安全的,你不能混用。必须manger.regidester

diov commented 7 years ago

@catroom 那也只是 LocalBroadcast 不适合你的使用场景,哪来鸡肋一说?

laiyuanwen commented 7 years ago

没什么是鸡肋的吧,只能说适合和不适合。