Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用LiveData代替LocalBroadcastManager_Java_Android_Kotlin - Fatal编程技术网

Java 如何使用LiveData代替LocalBroadcastManager

Java 如何使用LiveData代替LocalBroadcastManager,java,android,kotlin,Java,Android,Kotlin,之前,使用LocalBroadcastManager在服务和活动之间进行通信。但现在它已被弃用,官方文档建议改用LiveData。那么,如何使用LiveData将数据从服务传递到活动 一个好的选择是: 将要在存储库对象中读/写的数据定义为LiveData 让您的活动观察LiveData(或者更好地在回购和活动之间使用ViewModel) ) 让您的服务调用存储库的saveXXX()或updateXXX()方法来更新您的数据,活动将自动获得更新 您还可以按照本指南来创建一个好的应用程序体系结构 嘿

之前,使用LocalBroadcastManager在服务和活动之间进行通信。但现在它已被弃用,官方文档建议改用LiveData。那么,如何使用LiveData将数据从服务传递到活动

一个好的选择是:

  • 将要在存储库对象中读/写的数据定义为LiveData
  • 让您的活动观察LiveData(或者更好地在回购和活动之间使用ViewModel) )
  • 让您的服务调用存储库的saveXXX()或updateXXX()方法来更新您的数据,活动将自动获得更新 您还可以按照本指南来创建一个好的应用程序体系结构

    嘿,欢迎来到StackOverflow。另一种方法是让您的服务更新数据存储库中所需的任何数据,并让您的活动(可能通过ViewModel)观察相同的数据。这避免了全局/单例事件总线和类似的(非常糟糕的)事件总线,并以单向方式发送数据。更好吗?“是的”,很烦人吗?可能。除了违反许多“原则”之外,它被弃用的原因是它是本地的,因此您在设计为向整个系统广播的系统上进行广播(非本地广播),因此您处于相同的过程中,并且使用意图会增加开销(以及意图本身的限制)。因此,我们的想法不是“不赞成”这个类,如果您愿意,您仍然可以使用它,而是改变您对组件间通信的看法。非常感谢@MartinMarconcini@MartinMarconcini如果我的服务生成的数据是单向数据,不需要为后续运行存储该数据,有没有办法避免存储库?