- 博客(19)
- 收藏
- 关注
原创 常见的软件架构模式
架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。分层模式(Layered pattern)客户端-服务器模式(Client-server pattern)主从模式(Master-slave pattern)管道-过滤器模式(Pipe-filter pattern)代理模式(Broker pattern)点对点模式(Peer-to-peer pattern)事件-总线模式(Event-bus pattern)
2024-04-22 21:29:55
835
原创 Android组件化、模块化、插件化
将一个完整的工程,按业务划分为不同的插件,都是分治法的一种体现。组件更多的是从自下而上的视角,按照技术实现的思维划分实现代码,并将这些代码组装成一个app。本来就是不同的apk, 你把微信的朋友圈,聊天,通讯录单独做一个完全独立的app, 需要微信的时候插在一起,就是一个大型的app了。模块化编程是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,因此每个模块都包含仅执行所需功能的一个方面所需的一切。能做的只是, 朋友圈已经有了,我想单独调试,维护,和别人不耦合,但是和整个项目还是有关联的。
2024-04-22 21:15:07
936
1
原创 Android 四大组件启动
startService的生命周期为onCreate, onStartCommand, onDestroy,流程如下图。到此,服务便正式启动完成。当创建的是本地服务或者服务所属进程已创建时,则无需经过上述步骤2、3,直接创建服务即可。,在图中分别用3种不同的颜色来代表这3种通信方式。一般来说,同一进程内的线程间通信采用的是。在整个startService过程,从进程角度看服务启动过程。,另外与Zygote进程通信采用的。,不同进程间的通信采用的是。
2024-04-10 15:30:45
717
原创 SharedPreferences
多并发的提交commit时,需等待正在处理的commit数据更新到磁盘文件后才会继续往下执行,从而降低效率;每次commit是把全部数据更新到文件, 所以每个文件的数据量必须保证足够精简. 再来看看apply过程.可见, apply跟commit的最大区别 在于apply的写入文件操作是在单线程的线程池来完成.数据提交:数据提交的两个重要方法commit()和apply().//将内存数据同步到文件[见小节4.3]//将数据更新到内存[见小节4.2]//把数据更新到内存[见小节4.2]
2024-04-10 11:06:40
373
原创 解析View树、apk安装
/2. 不是merge标签那么直接调用createViewFromTag()方法解析成布局中的视图,这里的参数name就是要解析视图的类型,例如:ImageView。如果根容器不为空,且attachToRoot为true,则将解析出来的View添加到根容器中,如果根布局为空或者attachToRoot为false,那么解析出来的额View就是返回结果。//1. 解析merge标签,rInflate()方法会将merge下面的所有子View直接添加到根容器中,这里。//Context对象。
2024-04-09 20:09:32
833
原创 Android中的设计模式
中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。根据设计模式的参考书。
2024-03-22 15:18:31
982
原创 Android的三种动画详解(帧动画,View动画,属性动画)
设定起始和终止位置,中间会自动补齐,有平移、缩放、旋转、透明四种选择。对应的类为TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation。可以使用xml配置资源文件实现,也可以用代码实现,这里用代码实现。具体为:右键点击drawable文件夹->New→Drawable Resource File。缺点:交互性差,当动画结束后会回到初始位置,对于交互性要求较高的使用属性动画。优点:效率高,使用方便。
2024-03-15 10:18:59
3011
1
原创 Android垃圾回收机制
可达性算法的原理是以一系列叫做GC Root的对象为起点出发,引出它们指向的下一个节点,再以下个节点为起点,引出此节点指向的下一个结点(这样通过GC Root串成的一条线就叫引用链),直到所有的结点都遍历完毕。软引用和弱引用的区别在于,若一个对象是弱引用可达,无论当前内存是否充足它都会被回收,而软引用可达的对象在内存不充足时才会被回收,因此软引用要比弱引用“强”一些;如果该对象被其它对象引用,则它的引用计数加1,如果删除对该对象的引用,则它的引用计数减1,当该对象的引用计数为0时,该对象就会被回收。
2024-03-14 16:55:20
1261
原创 Android APP启动优化
处理完 IdleHandler 后会将 nextPollTimeoutMillis 设置为0,也就是不阻塞消息队列,当然要注意这里执行的代码同样不能太耗时,因为它是同步执行的,如果太耗时肯定会影响后面的 message 执行。系统中的使用:handleResumeActivity() 方法中末尾会执行 Looper.myQueue().addIdleHandler(new Idler()),也就是说在 onResume 等方法都执行完,界面已经显示出来了。
2024-03-14 16:27:42
1098
原创 android基础学习
在WindowManagerService服务中,每一个Android应用程序进程都对应有一个SurfaceComposerClient对象。由于每一个SurfaceSession对象所属的Session对象是一个Binder本地对象,并且它的Binder代理对象是保存在Android应用程序进程这一侧的ViewRoot类的静态成员变量sWindowSession中,因此,我们又可以推断出每一个Android应用程序进程在WindowManagerService服务都有一个对应的Session对象。
2024-03-06 19:56:36
530
原创 SF相关1111
AndroidQ 图形系统(11)UI刷新,SurfaceFlinger,Vsync机制总结_android viewrootimpl surfaceflinger hw-优快云博客
2024-02-06 17:37:06
684
原创 Android view measure、layout、draw
Android进阶——Android视图工作机制之measure、layout、draw-优快云博客
2024-01-11 15:14:21
469
原创 Android Studio 导入 Android 源码
本文介绍如何将 Android 源码导入到 Android Studio 中修改Android Studio的配置文件由于导入源码时需要消耗大量内存,所以建议修改studio64.vmoptions文件(该文件路径:Android Studio安装位置/bin): 打开studio64.vmoptions文件sudo geditstudio64.vmoptions然后将前两行改成如下形式:-Xms4096m -Xmx4096m首先要编译一次源码,然后看有没有out/host/..
2024-01-11 15:12:04
876
1
原创 Springer期刊参考文献格式如何用Latex生成
1. spbasic.bst文件中1571行和1624行的两个SORT,默认是开启的,代表文章后面参考文献列表是按作者名字首字母和年份排序的。如果用%%将其屏蔽代表参考文献是按引用的顺序排序的。2. \usepackage{natbib}\bibliographystyle{spbasic.bst}句首引用的时候用citet{} 句末引用的时候用(citealt{})这样就可...
2019-07-05 16:18:26
21738
3
原创 如何利用BibTex生成论文参考文献列表
如何利用BibTex生成论文参考文献列表Step1:先在Google Scholar上找到BibTeX条目信息导出来;如下:<html><body><p>@article{chowdhary2010aerodynamic, title={Aerodynamic parameter estimation from flight data applyi...
2019-01-17 14:37:57
3350
1
原创 MathType丢失Mplugin.dll文件解决方法及Mplugin.dll下载
1.首先你需要下载一个Mplugin.dll文件。下载地址:链接:https://pan.baidu.com/s/1whsrPFr2_3480uTLD541Zg提取码:ldpr2.解压下载文件,找到Mplugin.dll文件。3.找到MathType安装目录。知道MathType安装目录的可以通过资源管理器或我的电脑直接打开安装目录。如果不知道MathType的安装目录,可以右击桌面...
2018-12-28 17:29:30
12075
5
原创 OpenCV:CMake Error (find_package): but it set OpenCV_FOUND to FALSE so package "OpenCV" is consider
Ubuntu 16.04下在CMakeLists.txt中添加了OpenCV的头文件,然后把程序连接到库文件上,对CMakeLists.txt进行编译,出现错误大致如下:(终端错误内容和下列相似,但是我的没有保存错误内容)-- building main-- -- building mrcimgCMake Warning at /home/zzy/opencv-2.4.6.1/cmake/Open...
2018-05-30 19:09:29
4646
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人