首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当安卓上的Java8可用时,为什么DefaultLifecycleObserver比生命周期注释更好呢?

当安卓上的Java8可用时,为什么DefaultLifecycleObserver比生命周期注释更好呢?
EN

Stack Overflow用户
提问于 2020-05-07 17:00:18
回答 2查看 2.6K关注 0票数 10

根据Android开发人员生命周期文档

如果使用Java 7语言,则使用注释观察生命周期事件。一旦Java8语言成为Android上的主流语言,注释就不再受欢迎了,所以在DefaultLifecycleObserver和注释之间,您必须始终更喜欢DefaultLifecycleObserver

代码语言:javascript
复制
class TestObserver implements DefaultLifecycleObserver {
     @Override
     public void onCreate(LifecycleOwner owner) {
         // your code
     }
 }

哪些特定的Java 8语言/jvm特性正在推动生命周期注释的废弃?例如,在使用DefaultLifecycleObserver时,我们是否获得了更好的性能(构建还是运行时)?

EN

回答 2

Stack Overflow用户

发布于 2021-08-03 08:52:22

我认为这是因为DefaultLifecycleObserver使用接口默认方法,这是Java8的一个特性。

票数 3
EN

Stack Overflow用户

发布于 2022-03-12 09:14:52

如文件所述:

这个注释需要使用代码生成或反射,这是应该避免的。使用DefaultLifecycleObserver或LifecycleEventObserver代替。

应该避免反射吗?

在应用程序代码中使用反射通常是个坏主意,因为您失去了语言的严格类型检查。反射通常用于框架代码,这是必不可少的。..。如果可以不使用反射来执行操作,那么最好避免使用它。

最终视图:

这是不可取的,因为他们现在期望您使用Java 8并实现接口DefaultLifecycleObserver。因为Java 8允许接口具有默认实现,所以它们定义了DefaultLifecycleObserver,其中包含所有方法的空实现,因此您只需要覆盖所使用的方法。用@OnLifecycleEvent标记函数的旧方法是Java前8项目的支柱。这是允许类有选择地选择它关心的生命周期事件的唯一方法。另一种方法是强制这些类覆盖所有生命周期接口方法,即使它们是空的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61663501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档