动态代理+注解+反射实现View的点击事件绑定
个人博客
http://www.milovetingting.cn
动态代理+注解+反射实现View的点击事件绑定代理模式是给对象提供一个代理对象,由代理对象来控制原对象的引用。代理模式分为静态代理和动态代理。
静态代理定义接口
12345public interface Player { void play();}
定义具体的实现类
1234567public class PlayerImpl implements Player { @Override public void play() { System.out.println("PlayerImpl play..."); }}
定义代理类
12345678910111213public class ProxyImpl implements Player { private Player player; public ProxyImpl(Player player) { ...
Java中的注解和反射
个人博客
http://www.milovetingting.cn
Java中的注解和反射注解Java注解(Annotation)又称Java标注,是JDK5.0引入的一种注释机制。
注解定义通过@interface来声明一个注解
123public @interface Anno { }
元注解对注解进行注解的类就是元注解(meta-annotation),在自定义时,一般需要指定两个元注解
@Target限制可以应用注解的Java元素类型,包括以下几种:
123456789101112131415161718192021222324252627282930313233343536373839public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE, /** Field declaration (includes enum constants) */ FIELD, ...
Jetpack学习-WorkManager
个人博客
http://www.milovetingting.cn
Jetpack学习-WorkManagerWorkManager是什么WorkManager可以轻松调度即使在应用退出或设备重启时仍应运行的可延迟异步任务,不适用于应用进程结束时能够安全终止的运行中的后台工作,也不适用于需要立即执行的任务。
简单使用引入WorkManager在需要引入WorkManager的模块的build.gradle中,增加以下配置
12def work_version = "2.3.1" implementation "androidx.work:work-runtime:$work_version"
定义Worker12345678910111213public class UploadWorker extends Worker { public UploadWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { ...
Jetpack学习-Paging
个人博客
http://www.milovetingting.cn
Jetpack学习-PagingPaging是什么分页库可一次加载和显示一小块数据。按需载入部分数据会减少网络带宽和系统资源的使用量。
简单使用引入Paging在需要引入Paging模块的build.gradle中配置
12def paging_version = "2.1.0"implementation "androidx.paging:paging-runtime:$paging_version"
定义Bean12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152public class Student { private String id; private String name; private String gender; public String getId() { ...
Jetpack学习-Navigation
个人博客
http://www.milovetingting.cn
Jetpack学习-NavigationNavigation是什么Navigation翻译过来就是导航。
导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一套既定原则来确保一致且可预测的用户体验。
导航组件由以下三个关键部分组成:
导航图:在一个集中位置包含所有导航相关信息的 XML 资源。这包括应用内所有单个内容区域(称为目标)以及用户可以通过应用获取的可能路径。
NavHost:显示导航图中目标的空白容器。导航组件包含一个默认 NavHost 实现 (NavHostFragment),可显示 Fragment 目标。
NavController:在 NavHost 中管理应用导航的对象。当用户在整个应用中移动时,NavController 会安排 NavHost 中目标内容的交换。
在应用中导航时,您告诉 NavController,您 ...
Jetpack学习-Room
个人博客
http://www.milovetingting.cn
Jetpack学习-RoomRoom是什么
Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制
以上内容来自官方文档。用一句话总结下:Room是基于SQLite封装的一个框架。
简单使用引入Room在需要使用的模块的build.gradle中增加以下配置:
123456dependencies { //... def room_version = "2.2.3" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version"}
room_version最新可用的版本可以在官方的文档上查看。
Entity12345678910111213141 ...
Jetpack学习-DataBinding
个人博客
http://www.milovetingting.cn
Jetpack学习-DataBinding简单使用在需要使用DataBinding的模块的build.gradle中增加
123456789android { //... defaultConfig { //... dataBinding{ enabled true } }}
然后同步
新建一个继承自BaseObservable的类
12345678910111213141516171819202122232425262728293031public class User extends BaseObservable { private String name; private int age; public User(String name, int age) { this.name = name; thi ...
Jetpack学习-LiveData
个人博客
http://www.milovetingting.cn
Jetpack学习-LiveDataLiveData是什么LiveData是一种可观察的数据存储器类,具有生命周期的感知能力。
简单使用LiveData一般都是和ViewModel一起使用。定义一个类继承自ViewModel:
123456789101112131415161718public class LiveDataSub extends ViewModel { private MutableLiveData<String> infos; private int number; public MutableLiveData<String> getInfo() { if (infos == null) { infos = new MutableLiveData<>(); } return infos; } public int inc ...
Jetpack学习-Lifecycle
个人博客
http://www.milovetingting.cn
Jetpack学习-LifecycleLifecycle是什么Lifecycle是Jetpack提供的一个组件,可以感知Activity,Fragment的生命周期变化。
简单使用定义一个类继承自LifecycleObserver,根据业务需要,在这个类中重写相应的方法
123456789101112131415161718192021222324252627282930313233public class LifecycleObserverImpl implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) public void onCreate() { Log.d(MainActivity.TAG, "onCreate"); } @OnLifecycleEvent(Lifecycle.Event.ON_START) publi ...
Jetpack学习-初识Jetpack
个人博客
http://www.milovetingting.cn
Jetpack学习-初识Jetpack前言本篇介绍Jetpack,内容来自官方文档。(我是搬运工#^_^#)
Jetpack是什么
Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。
Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。
Jetpack能做什么
加速开发
组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin 语言功能帮助您提高工作效率。
消除样板代码
Android Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理),以便您可以专注于如何让自己的应用出类拔萃。
构建高质量的强大应用
Android Jetpack 组件围绕现代化设计实践构建而成,具有向 ...