Jeremy Liao
Jeremy Liao
> 在MainActivity中,当activity调用onResume的时候会post事件。在mainAcivity内的fragment中监听事件,如果我按home键回到主页,过了半个小时再打开的时候(此时进程没有被杀死,没有冷/热启动,可以瞬间回到mainActivity),此时会调用onResume方法,会post事件。然而fragment内却收不到事件。应该是监听失效了 我今天测了一下这个问题,就是用示例里面那个demo,我按home键回到主页,大概好几次吧,最长可能3个小时,最短半个小时,没有复现这个问题
暂时没有,会考虑这个需求
我想了一下,可能SingleLiveEvent并不能解决你的问题,SingleLiveEvent每次发送只会有一个Observer收到,这个Observer只会是第一个注册的Observer。我理了一下你的场景,可能这样能解决你的问题:假设你有A、B、C三个页面可能调支付,那么你在A注册Observer的时候你的key叫做“key_result_a”,同理,b,c,你调支付的时候把这个“key_result_a”通过bundle传给你的支付页面,支付成功之后你对这个key发送消息就可以了。
暂时不支持,我会考虑这个问题
> 可以试一下broadcastInternal内 > intent.setPackage(appContext.getPackageName()); 好的,感谢
请参考: -keep class com.jeremyliao.livedatabus.** { *; } -dontwarn com.jeremyliao.livedatabus.**
> 这个写在README里面吧, @JeremyLiao ,我也踩了这个坑 好的,多谢提醒
> 混淆规则为: > -dontwarn android.arch.lifecycle.LiveData > -keep class android.arch.lifecycle.LiveData { *; } > -keep class android.arch.lifecycle.LifecycleRegistry { *; } > -keep class android.arch.core.internal.SafeIterableMap { *; } 赞一个
> 如题,如果连续post同一个event,后面的会覆盖前面的。我说的覆盖指observer只能观察都后面那次post的东西,前面那次永远观察不到 > 现在遇到的实际问题如下 > 有一个界面里有一串提示性信息,相关observer中会保存传入的提示信息字符串,并更新ui。在跳转入这个界面前,我会post(null)要求复位提示信息。进入这个界面后,界面本身有初始化过程,初始化开始前会保存下当前储存的提示字符串,然后post(“初始化中...”),初始化完毕则post(之前保存下来的上一条提示信息). > 现在的问题是post(“初始化中...”)紧紧跟在post(null)后面,导致post(null)不会触发observer,于是提示信息永远不会复位~ > 个人觉得observerSticky和post应该一一对应,不能莫名其妙漏掉一个~ 连续post消息是不会漏掉消息的,也有相关的测试用例来保证。你这个地方的问题是你的post(null)复位操作是在进入页面之前,所以使用observer是收不到这个消息的。另外使用observerSticky只能保证收到之前发送的最后一条消息,而不会收到之前发送的所有消息
> 坑好多~~~ > 虽然observe是注册回调函数,但执行顺序却非常重要, > > ``` > observe(...) //A > observe(...) //B > ``` > > 在A之后post,A不能收到消息,在B的回调中post,A同样收不到消息。前者还好理解,后者就比较迷了。另外虽然前者可以理解,但实际使用起来非常容易因此出错,最好文档里提下~ 这个按理说是不会的,在A之后post,按理说是能够收到消息的,详细的代码贴一下?