android进阶
文章平均质量分 79
emmmmsuperdan
这个作者很懒,什么都没留下…
展开
-
android 系统版本差异
Android5.0:Android运行时由Android核心库集和Dalvike虚拟机改成Android核心库集和ART(Android Runtime)模式Android6.0:动态权限Android7.0:在官方7.0的以上的系统中,尝试传递 file://URI可能会触发FileUriExposedException。要应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider类。Android8.0:And原创 2023-03-23 10:28:18 · 632 阅读 · 1 评论 -
RecycleView详解
四级缓存和流程说一下。滑动10个,再滑回去,bindview可以是19次调用,可以是16次调用。缓存的其实就是缓存item的view,在Recycleview中就是viewholder。cachedView就是mCacheViews缓存区中的view,是不需要重新绑定数据的。原创 2023-02-25 12:51:24 · 629 阅读 · 0 评论 -
强记知识点
Android:Android系统结构:Android系统体系结构(采用软件叠层,降低系统5层之间的耦合性):1. 应用程序层--------就是手机上的App2.应用程序框架3.函数库-------------里面都是C/C++库,不能直接调用这些库,但是通过应用程序框架可以运行4.Android运行时---------分为两部分1.Android核心库集,即Java语言核心库所使用的大部分功能...原创 2021-03-17 12:45:41 · 886 阅读 · 1 评论 -
MVC和MVP MVVM
MVC:M:model,模型(业务逻辑):进行数据库的读写等等V:view,视图(控件)等等:进行数据的显示C:controller(控件的方法(界面逻辑),给model传递参数之类);比如:你点个BUTTON,隐藏个控件,这个控件决定了model某个属性.如果隐藏这个方法是在view中写的,就是MVC,如果这个方法不是在View中写的就是MVP其中:button是view...原创 2018-08-28 14:20:43 · 785 阅读 · 1 评论 -
Android APK打包流程
打包流程图:流程:1. 打包资源文件,生成R.java文件打包资源的工具是aapt,在这个过程中,项目中的AndroidManifest.xml文件和布局文件XML都会编译,然后生成相应的R.java,存放在APP的res目录下的资源,该类资源在APP打包前大多会被编译,变成二进制文件,并会为每个该类文件赋予一个resource id。对于该类资源的访问,应用层代码则是通过resource id进行访问的。Android应用在编译过程中aapt工具会对资源文件进行编译,并生成一个res.原创 2021-03-16 15:31:26 · 493 阅读 · 0 评论 -
android bitmap优化
bitmap内存大小 = (图片长度 x 图片宽度)(分辨率压缩) x 单位像素占用的字节数 (改变编码格式);分辨率压缩为什么要比较实际宽高和目标宽高比呢?改变编码格式:...原创 2018-08-13 15:14:09 · 3476 阅读 · 1 评论 -
断点续传的思路
用RandomAccessFile类中的可以移动到指定位置,从而开始在本地文件特定位置进行写操作的方法;断点下载:客户端暂停时,记录下已经下载的文件大小,下次下载就从后面(调用seek方法,skip??);接着,暂停开始后,重新请求服务器的代码中有一行就是如上:设置下载的区间状态响应码正常的是responsecode==200,如果是断开连接后重新...原创 2018-08-28 16:25:01 · 1784 阅读 · 0 评论 -
view的绘制流程
1.OnMeasure:测量view的宽/高2.OnLayout:决定view的四个顶点位置,以及拿到View的实际宽/高3.OnDraw:绘制viewView的绘制流程是从ViewRoot的performTraverse方法开始,依次调用measure。layout,draw,父类view通过measure方法来对所有的子View进行measure,从而将整个View树meas...原创 2018-06-22 15:54:42 · 282 阅读 · 1 评论 -
应用启动流程 Window创建流程 安卓系统启动流程(待补充)
点击app的启动图标时,Android系统会从Zygote进程fork创建出一个新的进程分配给该应用;之后会依次创建和初始化Application类,创建MainActivity类,加载主题样式Theme中背景等属性;然后再inflate布局,当oncreate/onstart/onresume方法都走完了之后,最后才对contentview进行measure/layout/draw显示再界面上,到此,应用的第一次启动才算完成;...原创 2021-02-19 14:24:12 · 336 阅读 · 1 评论 -
android framework底层源码分析
framework分了三个部分:服务端,客户端,Linux驱动 服务端: AMS:管理所有的ActivityWMS:管理所有的ViewGroup和View 客户端:ActivityThread类:即主线程,负责客户端与AMS交互,内部有ApplicationThread类,负责和AMS跨进程通信,还有一个Handle类,负责将ApplicationThread类发来的消...原创 2018-08-30 10:40:07 · 1471 阅读 · 0 评论 -
Android Binder通信原理
1.Binder的机制自己实现Binder:和通过AIDL接口实现Android进程通信一样;首先创建一个Activity中的service类,来获得server对象,也就是IBinder对象;只不过获得这个server对象要继承Binder,重写onTransact()方法;当客户端发起请求的时候,Binder Driver就会调用execTransa...原创 2018-08-14 12:52:55 · 2796 阅读 · 1 评论 -
ListView优化问题
第一(优化加载布局:重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层,呈献给用户。特点:如果当前的convertView为null,则通过LayoutInflat产生一个view。代码如下View view;if(convertView == n...原创 2018-03-14 21:00:53 · 418 阅读 · 0 评论 -
serializable和Parcelable
1.首先搞清楚为什么要序列化: 为了传递对象;因为intent要想传递对象的话,那么这个对象一定是实现了Serializable或Parcelable接口的;2.他们俩有啥区别呢: Serializable是Java自带的,将一个对象传化成可传输或可存储的状态,可以用于网络传输,以及本地存储等;Parcelable是专门为Android服务的,是将一个完整的对象分...原创 2018-03-22 17:44:49 · 263 阅读 · 1 评论