自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 常见的软件架构模式

架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。分层模式(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 753

原创 Android组件化、模块化、插件化

将一个完整的工程,按业务划分为不同的插件,都是分治法的一种体现。组件更多的是从自下而上的视角,按照技术实现的思维划分实现代码,并将这些代码组装成一个app。本来就是不同的apk, 你把微信的朋友圈,聊天,通讯录单独做一个完全独立的app, 需要微信的时候插在一起,就是一个大型的app了。模块化编程是一种软件设计技术,强调将程序的功能分离为独立的可互换模块,因此每个模块都包含仅执行所需功能的一个方面所需的一切。能做的只是, 朋友圈已经有了,我想单独调试,维护,和别人不耦合,但是和整个项目还是有关联的。

2024-04-22 21:15:07 585 1

原创 Android 四大组件启动

startService的生命周期为onCreate, onStartCommand, onDestroy,流程如下图。到此,服务便正式启动完成。当创建的是本地服务或者服务所属进程已创建时,则无需经过上述步骤2、3,直接创建服务即可。,在图中分别用3种不同的颜色来代表这3种通信方式。一般来说,同一进程内的线程间通信采用的是。在整个startService过程,从进程角度看服务启动过程。,另外与Zygote进程通信采用的。,不同进程间的通信采用的是。

2024-04-10 15:30:45 659

原创 MVC、MVP和MVVM使用例子

GitHub - shuaici/mvc-mvp-mvvm-demo: mvc-mvp-mvvm三种框架的简单Demo

2024-04-10 11:06:46 115

原创 SharedPreferences

多并发的提交commit时,需等待正在处理的commit数据更新到磁盘文件后才会继续往下执行,从而降低效率;每次commit是把全部数据更新到文件, 所以每个文件的数据量必须保证足够精简. 再来看看apply过程.可见, apply跟commit的最大区别 在于apply的写入文件操作是在单线程的线程池来完成.数据提交:数据提交的两个重要方法commit()和apply().//将内存数据同步到文件[见小节4.3]//将数据更新到内存[见小节4.2]//把数据更新到内存[见小节4.2]

2024-04-10 11:06:40 341

原创 解析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 790

原创 Android中的设计模式

中所提到的,总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。根据设计模式的参考书。

2024-03-22 15:18:31 932

原创 Android内存泄漏

Android性能优化:我总结了关于内存泄漏的所有知识 - 掘金

2024-03-15 16:35:35 131

原创 Android的三种动画详解(帧动画,View动画,属性动画)

设定起始和终止位置,中间会自动补齐,有平移、缩放、旋转、透明四种选择。对应的类为TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation。可以使用xml配置资源文件实现,也可以用代码实现,这里用代码实现。具体为:右键点击drawable文件夹->New→Drawable Resource File。缺点:交互性差,当动画结束后会回到初始位置,对于交互性要求较高的使用属性动画。优点:效率高,使用方便。

2024-03-15 10:18:59 1310 1

原创 Android垃圾回收机制

可达性算法的原理是以一系列叫做GC Root的对象为起点出发,引出它们指向的下一个节点,再以下个节点为起点,引出此节点指向的下一个结点(这样通过GC Root串成的一条线就叫引用链),直到所有的结点都遍历完毕。软引用和弱引用的区别在于,若一个对象是弱引用可达,无论当前内存是否充足它都会被回收,而软引用可达的对象在内存不充足时才会被回收,因此软引用要比弱引用“强”一些;如果该对象被其它对象引用,则它的引用计数加1,如果删除对该对象的引用,则它的引用计数减1,当该对象的引用计数为0时,该对象就会被回收。

2024-03-14 16:55:20 976

原创 Android APP启动优化

处理完 IdleHandler 后会将 nextPollTimeoutMillis 设置为0,也就是不阻塞消息队列,当然要注意这里执行的代码同样不能太耗时,因为它是同步执行的,如果太耗时肯定会影响后面的 message 执行。系统中的使用:handleResumeActivity() 方法中末尾会执行 Looper.myQueue().addIdleHandler(new Idler()),也就是说在 onResume 等方法都执行完,界面已经显示出来了。

2024-03-14 16:27:42 1053

原创 android基础学习

在WindowManagerService服务中,每一个Android应用程序进程都对应有一个SurfaceComposerClient对象。由于每一个SurfaceSession对象所属的Session对象是一个Binder本地对象,并且它的Binder代理对象是保存在Android应用程序进程这一侧的ViewRoot类的静态成员变量sWindowSession中,因此,我们又可以推断出每一个Android应用程序进程在WindowManagerService服务都有一个对应的Session对象。

2024-03-06 19:56:36 503

原创 SF相关1111

AndroidQ 图形系统(11)UI刷新,SurfaceFlinger,Vsync机制总结_android viewrootimpl surfaceflinger hw-CSDN博客

2024-02-06 17:37:06 654

原创 Surface与SurfaceControl创建、viewrootimpl中SurfaceControl关系

这个系列的专栏。

2024-01-29 17:25:23 255

原创 Android view measure、layout、draw

Android进阶——Android视图工作机制之measure、layout、draw-CSDN博客

2024-01-11 15:14:21 372

原创 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 748 1

原创 Springer期刊参考文献格式如何用Latex生成

1. spbasic.bst文件中1571行和1624行的两个SORT,默认是开启的,代表文章后面参考文献列表是按作者名字首字母和年份排序的。如果用%%将其屏蔽代表参考文献是按引用的顺序排序的。2. \usepackage{natbib}\bibliographystyle{spbasic.bst}句首引用的时候用citet{} 句末引用的时候用(citealt{})这样就可...

2019-07-05 16:18:26 20380 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 3239 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 11945 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 4536 2

黑屏分析工具黑屏分析工具

黑屏分析工具黑屏分析工具

2024-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除