Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Android 从广播活动转到奥托有什么好处吗_Android_Android Broadcast_Otto - Fatal编程技术网

Android 从广播活动转到奥托有什么好处吗

Android 从广播活动转到奥托有什么好处吗,android,android-broadcast,otto,Android,Android Broadcast,Otto,我无意中发现了,它看起来像是用来代替广播活动的。我读了文件,但我不明白使用Otto是否有很多好处。应该与Otto进行比较。这是因为Otto和LocalBroadcastManager都不支持 奥托的优点: 更少的代码和更可读的代码 可以传递复杂对象(不需要对象序列化) 通过@Producers进行即时值回调 奥托的缺点: Otto使用反射,这就是为什么如果您非常频繁地发送整数值,它可能比LocalBroadcastManager慢 根据应用程序的结构,这可能并不重要,但Otto也不需要有一

我无意中发现了,它看起来像是用来代替广播活动的。我读了文件,但我不明白使用Otto是否有很多好处。

应该与Otto进行比较。这是因为Otto和LocalBroadcastManager都不支持

奥托的优点:

  • 更少的代码和更可读的代码
  • 可以传递复杂对象(不需要对象序列化)
  • 通过
    @Producer
    s进行即时值回调
奥托的缺点:

  • Otto使用反射,这就是为什么如果您非常频繁地发送整数值,它可能比LocalBroadcastManager慢

根据应用程序的结构,这可能并不重要,但Otto也不需要有一个方便的
上下文来发送事件或注册侦听器。

我不喜欢使用Otto而不是本机插装,因为它需要从应用程序的上下文获取一个实例。这在使用像dagger这样的DI框架时不会改变。通过使用注释和使用基于类的事件而不是基于字符串的操作来节省这么多代码是一个巨大的好处。

反射被记录下来,因此您只需提前支付90%的惩罚。在ICS及以上的比赛中,这个点球基本上是无关紧要的。嗨,杰克,你能说得更具体一点吗?我的团队中有一些人说反射在Android上被证明是缓慢的,因此,当我想利用Otto的优点来解决我们的问题时,不应该使用Otto。对奥托的反思是一个我们应该关心的问题吗?@Thuytrinhandroid reflection在Android 4之前真的很慢。从那时起,它变得更快了。但是,如果你严重依赖它,它可能会减慢你的应用程序。例如,使用基于反射的注入框架将显著降低应用程序的启动时间。在Otto中,大多数重反射查找只向下查找一次,然后缓存。因此,奥托在这方面进行了优化。但是,如果您打算每秒发送数百或数千个事件,则可能需要重新考虑您的设计。这不是Otto最初设计的目的。这意味着Otto需要从静态单例中获得,这是一种仍在讨论中的模式。我想这取决于范围。如果您对消息总线的需求仅限于一个子系统,并且您主要是试图避免其内部杂乱无章的布线,那么您可能不需要静态单例。