参考答案:
DataBinding的使用,请戳这里,本文主要是介绍DataBinding原理
1. DataBinding作用,实现一个MVVM
2. DataBinding使用的主要技术点,Java APT,观察者,注解等
3. DataBinding关键类
ActivityMainBindingImpl 具体实现了绑定
ViewDataBinding 持有activity或者fragment和View的引用,主要作用一次遍历View,实例化所有子View,并存储在数组中,这里解决了findviewbyid性能问题,同时为我们省去了findviewbyid的操作
BR 类似Android R文件
DataBinderMapperImpl 提供了布局文件layoutid到ViewDataBinding类对象的映射,主要用于加载layout返回对应的ViewDataBinding对象
4. DataBinding如何实现双向绑定的
如图:
DataBinding在编译时会生成一个ViewDataBinding的子类xxBinding,例如ActivityMainBinding,ActivityMainBinding默认持有了View和Model和Activity/Fragment,在ActivityMainBinding里面有个关键方法,excuteBinding(),在这里为View设置值,同时设置了BindingAdapter和InverseBindingLinstener,如上图所示。BindingAdapter主要是提供了View的set get方法和状态Linstener。
想参考学习更多Android面试题可直接去我 GitHub地址:https://github.com/733gh/Android-T3 查阅。
-
方案1、使用极光和友盟推送。
-
方案2、使用XMPP协议(Openfire + Spark + Smack)
-
简介: 基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。
-
优点: 协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。