- 博客(29)
- 收藏
- 关注
原创 Material Design
•径向响应 所有的用户交互行为中都会有一个中心点,作为用户关注的中心点,当用户进行操作时应该绘制一个明显的视觉效果来让用户清晰地感知到自己的操作。Material Design的核心思想,就是将物理世界中的体验带入屏幕,并且去掉物理世界中的杂质,再配合虚拟世界的灵活特性,达到最贴近真实的体验。转场动画当一个界面跳转到另一个界面时,这一过程可以编排转场动画,这些动画不仅可以带来良好的视觉效果,更重要的是吸引用户的注意,比如我们可以利用转场动画引导用户做下一步的操作。
2023-10-04 11:25:42 120
原创 Android开发架构模式
而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时可以保持Presenter的不变,这点符合面向接口编程的特点。•Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户界面,接受并处理来自用户的操作请求,进而做出响应。接下来我们学习MVP模式。•Presenter:作为View和Model之间沟通的桥梁,它从Model层检索数据后返回给View层,使得View和Model之间没有耦合。
2023-09-29 10:01:59 145
原创 git命令大全
执行 git archive –remote 命令基于远程版本库创建归档时,远程版本库执行此命令传送归档。执行 git fetch 或 git pull 命令时在本地执行此命令,用于从其他版本库获取缺失的对象。执行 git fetch 或 git pull 命令时在远程执行此命令,将对象打包、上传。执行 git push 命令时在本地执行的命令,用于向其他版本库推送数据。执行 git push 命令时在远程执行的命令,用于接受推送的数据。Git的CVS协议模拟器,可供CVS命令访问Git版本库。
2023-09-28 08:49:32 117
原创 理解ActivityManagerService
AMS处理的逻辑多而复杂,因此AMS并不是“孤军奋战”,而是有一些类和它“共同奋战”,这些类会帮助AMS完成相关逻辑,AMS和这些“共同奋战”的类就称为AMS家族。Android 7.0和Android 8.0对于AMS相关部分处理有较大的区别,为了更好地理解AMS家族,这里将分别介绍Android 7.0和Android 8.0的AMS家族。
2023-09-27 17:58:39 135
原创 理解上下文Content
ContextImpl 提供了很多功能,但是外界需要使用并拓展ContextImpl的功能,因此设计上使用了装饰模式,ContextWrapper是装饰类,它对ContextImpl进行包装,ContextWrapper主要是起了方法传递的作用,ContextWrapper中几乎所有的方法都是调用ContextImpl的相应方法来实现的。和Context相关联的类,除了ContextImpl,还有ContextWrapper、ContextThemeWrapper和Activity等。
2023-09-16 21:33:31 168
原创 Activity的生命周期全面解析
笔者的理解是,这种情况属于极端情况,用户操作很难重现这一场景。这种情况一般是用户行为所导致的,比如用户按Home键切换到桌面或者用户打开了一个新Activity,这时当前的Activity就会暂停,也就是onPause和onStop被执行了,接着用户又回到了这个Activity,就会出现这种情况。要注意这个和onStart的对比,onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。
2023-09-15 00:17:14 276
原创 注解与依赖注入框架
在许多程序设计语言里,比如Java、C#,依赖注入是一种交流性的设计模式,在Android开发中也有很多实用的依赖注入框架,可以帮助我们少写一些样板代码,达到各个类之间解耦的目的。
2023-09-12 22:55:35 51
原创 结构性设计模式
智能指引:当调用真实的对象时,代理处理另外一些事,比如计算真实对象的引用计数,当该对象没有引用时,可以自动释放它;在现实生活模式中我们用到类似代理模式的场景有很多,比如代理上网、打官司等。结构型设计模式是从程序的结构上解决模块之间的耦合问题,它包括适配器模式、代理模式、装饰模式、外观模式、桥接模式、组合模式和享元模式。RealSubject:真实主题类,代理类所代表的真实主题。Proxy:代理类,持有对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相对的接口方法执行。代理模式的类型和优点。
2023-09-09 21:11:43 68
原创 多线程阻塞队列
2.LinkedBlockingQueue它是基于链表的阻塞队列,同ArrayListBlockingQueue类似,此队列按照先进先出(FIFO)的原则对元素进行排序,其内部也维持着一个数据缓冲队列(该队列由一个链表构成)。双向队列可以从队列的两端插入和移出元素,因此在多线程同时入队时,也就减少了一半的竞争。公平访问队列就是指阻塞的所有生产者线程或消费者线程,当队列可用时,可以按照阻塞的先后顺序访问队列。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。
2023-09-06 10:56:38 128
原创 设计模式六大原则
这样如果我们再新增功能,你就会发现自己无须修改原有的类,只需要添加一个功能类的子类实现功能类的方法就可以了。依赖倒置原则在Java中的表现就是,模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生的。由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。•为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。•在类的划分上,应当尽量创建松耦合的类。
2023-09-05 19:53:10 89
原创 Android线程池
1、可以通过ThreadPoolExecutor来创建一个线程池,ThreadPoolExecutor类一共有4个构造方法。
2023-09-04 07:27:43 96 1
原创 多线程编程-线程基础
使用多线程可以减少程序的响应时间,如果某个操作很耗时,或者陷入很长时间的等待,此时程序将不会响应鼠标和键盘等的操作,使用多线程后可以把这个耗时的线程分配到一个单独的线程中去执行,从而使程序具备了更好的交互性。什么是线程:列表第一项运行的exe文件就表示进程,它里面运行了很多子任务,这些子任务有的加载网页,有的处理缓存,有的进程下载,这些子任务就是线程,是操作系统调度的最小单元。以下是其主要步骤:(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。
2023-09-03 14:08:14 50
原创 Android系统启动
在Android系统中,DVM(Dalvik虚拟机)和ART、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也将它称为孵化器。我们已经知道Zygote进程是在init进程启动时创建的,起初Zygote进程的名称并不是叫“zygote”,而是叫“app_process”,这个名称是在Android.mk中定义的,Zygote进程启动后,Linux系统下的pctrl系统会调用app_process,将其名称换成了“zygote”。
2023-09-02 23:38:36 51
原创 RxJava 3.x
3.ReplaySubject不管Observer何时订阅ReplaySubject,ReplaySubject均会发射所有来自原始Observable的数据给Observer。Subject 既可以是一个 Observer 也可以是一个Observerable,它是连接 Observer 和Observerable的桥梁。RxJava的异步操作是通过扩展的观察者模式来实现的,RxJava有4个角色Observable、Observer、Subscriber、Suject。•onNext:普通的事件。
2023-04-11 20:03:20 181
原创 Android业务架构 · 基础篇 · Jetpack四件套
Jetpack不断地更新和增加新的组件,使得Android应用的开发更加高效、稳定和可维护。
2023-03-06 15:27:27 323 1
原创 Kotlin中的Gradle
Gradle的认识,通过本章节可以对Gradle有一个系统化的认识和理解。更多的Gradle还需要寻找更加专业的书籍
2023-02-16 08:12:33 706
Apollo配置管理系统
2023-02-24
号外!号外!微信小程序项目
2023-02-23
未来人工智能趋势,方向-报告
2023-02-20
Java面试题(初,中,高,专家级)
2023-02-16
史上最全面的vue面试题
2023-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人