- 博客(38)
- 收藏
- 关注
原创 NDK开发史诗级入门教程
ndk全称Native Developer Kits,Android NDK也是Android SDK的一个扩展集,用来扩展SDK的功能。NDK打通了Java和C/C++之间的开发障碍,让Android开发者也可以使用C/C++语言开发APP。众所周知:Java是在C/C++之上的语言,语言金字塔越往上对开发者就更加贴近,也就是更容易开发,但是性能相对也就越低。越往下对开发人员的要求也就越高,但是实现后的产品性能也越高,因为可以自己控制内存等模块的使用,而不是让Java虚拟机自行处理。NDK的使用场景。
2023-02-27 14:19:15
6368
原创 组件封装(五):如何封装一个音乐播放组件?
前面一篇文章我们讲解了maven私服的搭建,maven私服在组件化框架中有一个很重要的地位就是可以将我们的lib库放到局域网中,供公司其他开发者使用,实现类库的分享。下面是这个系列准备实现的一个组件化实战项目框架笔者打算从下往上依次来实现我们项目中的组件,毕竟地基稳固了,房子才可以搭的很结实。注意:这里不会对封装代码进行长篇大论,主要还是以思路点拨的方式进行,如果需要看完整代码的可以移步到github。
2023-02-24 10:48:15
231
原创 如何优化的对进程进行保活?
前面文章我们封装了网络请求组件lib_nework和图片加载组件,今天我们来封装一个进程保活的组件Android组件化开发(一)–Maven私服的搭建Android组件化开发(二)–网络请求组件封装Android组件化开发(三)–图片加载组件封装远古时代,出现过很多黑科技,比如MarsDaemon,使用双进程守护的方式进行保活,在当时可谓风光无限,可惜在8.0时代到来就被废弃了。又比如后面出现的1像素Activity。
2023-02-21 11:02:40
222
原创 Android组件化开发(三)--图片加载组件封装
前面一篇文章我们做了一个组件化网络请求库:lib_network的封装Android组件化开发(二)–网络请求组件封装今天我们来封装一个图片加载库其实封装思想都是一样的:1.需求分析2.技术选型3.根据1和2进行类库封装此篇文章主要是对组件化框架中功能组件:图片加载框架的封装,对于大部分类库的封装都可以使用我们上面的思路,再结合maven私服的使用。可以很好的将我们代码作为一个组件共享给开发同事使用。
2023-02-20 10:39:34
167
原创 计算机组成原理系列(三):计算机存储器结构体系详解
生活中经常听到这句话“一分钱一分货,哪有那么多又便宜又好用”,在计算机存储体系中,也是如此,存储速度越快的,也就越贵,而且是呈指数的贵。计算机存储呈如下金字塔排布。理想情况下,我们肯定希望拥有无限大的内存容量,这样就可以立刻访问任何一个特定的机器字,但我们不得不认识到有可能需要构建分层结构的存储器,每一层次容量都要大于前一层次,但其访问速度也要更慢一些。你是不是经常被以下名词弄得晕头转向。等等,下面,我尽力以上图为参考,从上到下,说明各个层次存储器的特点和区别,并对它们的工作原理做一些简要的说明。
2023-02-16 09:58:58
1816
3
原创 计算机组成原理系列(二):计算机编码全解析
你是不是工作了很多年了,一直没搞清楚计算机中的各种编码规则,虽然平时都会使用,但是内部机制原理一直都是之其然而不知其所以然,开发中也会经常涉及到这块内容,但都没有太多重视,这可能会让有吃一些亏(出项目bug了),本着追本溯源的精神或是为了让自己在少出血bug,小余今天就来聊聊这块内容。上面关于字符集和编码讲了许多概念,其实归类一下可以这么理解:1、最初美国ANSI发明了自己的编码ASCII,7-bit足够,这是标准ASCII。
2023-02-15 10:31:01
828
1
原创 【重学C/C++系列(八)】:如何理解C++中的void*?
首先void*中的void代表一个任意的数据类型,"星号"代表一个指针,所以其就是一个任意数据类型的指针。对于指定数据类型的指针如int* ,double*等,他们的sizeof都是4个字节,因为都是一个指针,只是指针指向的数据类型不一致。C语言是一个强类型的语言,那么他们之间有什么区别呢?前面一篇文章我们说过,指针+1和-1是和指向数据类型有关的。
2023-02-13 09:40:48
1838
原创 【重学C/C++系列(七)】:文件操作基础
内存中的数据在断电之后就会消失,如果需要持久化数据,则需要将数据写入到文件中C++中使用输入流和输出流来操作文件:输入流起点和输出流的终点都可以是磁盘文件:cout是输出流的终点,可以把cout就看成是一个文件描述符,数据顺着从cin文件中流到buf数组中C++中读写文件有两种文件格式文件信息采用ASCII码进行存储,每个字符占用一个字节文件信息和内存中的信息一致,也就是二进制格式,一般情况下比较难看懂。
2023-02-10 10:37:38
71
原创 【重学C/C++系列(六)】:函数指针
前面一篇文章我们讲解了C/C++中关于指针的用法,但是当时局限的是对变量的指针,对函数这块并未讲解,其实函数也是有地址的。在程序中定义一个函数,则编译时系统就会为这段代码分配一段存储空间,这段存储空间的首地址称为函数的地址,且函数名代表的就是这个地址。既然是地址就可以使用一个指针变量来存储这个地址,这个指针变量就就叫做函数指针。函数返回值类型 (* 指针变量名) (函数参数列表);例如:int (*p)(int,int)
2023-02-09 11:55:43
72
原创 【重学C/C++系列(五)】:C++中的面向对象编程全解析
C++作为一门在C和Java之间的语言,其既可以使用C语言中的高效指针,又继承了Java中的面向对象编程思想,在去年编程语言排行榜上更是首次超过Java,进入前三。【重学C/C++系列(三)】:这一次彻底搞懂指针和引用今天这篇文章就来讲解下C++中的面向对象编程思想。封装,继承和多态。本篇文章就以这三个特性展开。封装,继承以及多态以及对象编程中模板编程,虚函数,构造函数,析构函数,拷贝构造,操作符重载等知识, 知识点还是比较多的,需要好好消化下。
2023-02-09 11:48:05
292
原创 【重学C/C++系列(四)】:函数体hack过程详解
首先来说下什么是hack?hack字面意思“非法入侵”,那么在C/C++中其实就是使用反汇编查看C/C++代码对应的汇编代码。那可能有人要问了,C/C++不是高级语言么,为什么还要看汇编代码?理由嘛见仁见智,1.C/C/C++应用不像java,python那样,报错信息可以在日志中一目了然,C/C++应用的报错可以让你查的怀疑人生,为什么呢?因为报错日志提供的信息可能会误导你,比如真实错误是在100行,但是报错信息会在第一行或者全局都有报错,就很让人上头。。
2023-02-08 11:39:00
1290
原创 【重学C/C++系列(三)】:这一次彻底搞懂指针和引用
相信学过C++都知道指针以及引用,C++中使用指针是为了兼容C语言,而使用引用是为了更加贯彻面向对象编程思想,今天小余就来和大家聊聊关于C++中指针以及引用。计算机内存单元内容以及地址内存由很多内存单元组成,这些内存单元用于存放各种类型的数据。**计算机对每个内存单元都做了编号,这个编号就是内存地址,这个地址决定了内存单元在内存中的位置。**这些内存单元很复杂,人为很难记住,所以这些C++编译器通过变量名来访问这些内存地址。本篇文章对C++中的指针以及引用做了较为详细的讲解。1.指针的基本概念。
2023-02-07 14:25:50
342
原创 【重学C/C++系列(二)】:extern关键字用法全解析
extern 是C/C++语言中表明全局变量或者函数作用范围(可见性)的关键字,编译器收到extern通知,则其声明的变量或者函数可以在本模块或者其他模块使用。对于函数而言,由于函数的声明如“extern int method();”与函数定义“int method(){}”可以很清晰的区分开来,为了简便起见,可以把extern关键字省略,于是有了我们常见的函数声明方式“int method();”,然而对于变量并非如此,变量的定义格式如“int i;”,声明格式为“extern int i;
2023-02-06 17:24:44
1730
原创 重学C++系列(一):从C到C++
作为一个Android开发者,可能你觉得我是不是跑错场了,Android开发又用不到C++的知识。。额,如果你这么觉得,只能说明你还是一个Android基础开发者,C++在高级领域,如性能优化,NDK,音视频,framework,ART虚拟机等都使用的它,所以学习C++对我们Android开发其实非常必要。本篇是重学C++系列的第一篇,希望文章对你有启发。
2023-01-12 16:32:28
380
原创 基于Android T:包管理机制详解(下)
前面一篇文章我们讲解了PKMS的启动过程。1.会对某些配置文件进行解析扫描,放到PKMS对象内存中2.会对系统中的应用包括:overlay,system,vendor,app等路径下的应用进行扫描,如果发现有版本更新,则进行应用更新操作。3.初始化包管理过程中需要使用到一些环境对象等。接下面我们再来讲解下第三方应用的安装过程关于Android中包管理机制,由于源码部分内容较多,小余使用了两篇文章来讲解。希望你能从中有所收获。基于Android T:包管理机制详解(上)如果文字对你帮助,帮忙给小余。
2022-12-25 11:07:14
601
原创 基于Android T:包管理机制详解(上)
(简称PKMS)是Android系统核心服务之一,和AMS,WMS,IMS并列”Android四大金刚服务“,其管理着整个Android应用的安装更新和卸载等操作。PKMS在我们开发中经常会碰到,了解其底层原理对我们开发也是很有帮助的,比如包体积优化,应用启动优化等。注:本文源码全部基于Android T。
2022-12-25 11:05:17
1087
原创 “一文读懂”系列:AMS是如何动态管理进程的?
前面一篇文章介绍了关于WMS在整个Android体系中的作用,主要可以划分为四类职责1.窗口管理2.窗口动画3.Surface管理4.输入事件中转站。如果把WMS比作古代将军,那么这四类职责就是将军手下几元大将,而AMS作为Android整个体系的统筹者,理所当然的就是古代的皇帝。AMS进程管理传统的进程是指程序执行的载体,进程退出也就意味着程序退出了,而在Android中,进程的概念被弱化了,进程成为一个运行组件的容器。
2022-12-08 18:32:05
773
原创 “一文读懂”系列:无处不在的WMS
前一篇文章介绍了关于Android中Window体系的介绍,主要介绍的是View层的Window体系概念,但是想要深入了解Window在系统中的机制,WMS是绕不过去的坎。有句话说的好:AMS和WMS占据了Framework层的半壁江山,所以了解这两个概念对我们在日常开发中的性能优化或有想转Framework开发的都大有帮助。笔者花了几天时间对WMS相关知识进行了整理。首先我们来说下WMS在系统中的几大职责为了更好的讲解个个核心成员类,我们需要先来理清Window中的容器和树的概念。容器:这个大家都熟悉,在
2022-12-03 14:03:21
640
原创 从根源上看屏幕点击事件是如何传递到View中的(下)-事件分发
关于为什么会有这“framework必会系列”文章?对,卷王太多了。。对于目前应用开发已经饱和的大环境下,作为一个多年Android开发,逼迫我们Android开发往更深层次的framework层走,于是就有了这么个系列。好了这都不谈了,我们来进入正文。
2022-11-26 09:23:24
240
原创 从根源上看屏幕点击事件是如何传递到View中的(上)-事件获取
关于WMS处理以及View处理部分,后续会出一些文章讲解。文章将分两个阶段来对输入系统介绍。
2022-11-24 14:12:55
843
原创 “一文读懂“系列:Android中的硬件加速
默认情况下Skia的绘制没有采用GPU渲染的方式(虽然Skia也能用GPU渲染),也就说默认drawSoftware工作完全由CPU来完成,不会牵扯到GPU的操作,但是8.0之后,Google逐渐加重了Skia,开始让Skia接手OpenGL,间接统一调用,将来还可能是Skia同Vulkan的结合。这也是手机端硬件性能越来越好的结果吧。如果本篇文章对你有帮助,请帮忙,关注下,,笔者会定期推送一些关于Android移动开发中的高质量文章。小余的自习室参考Android 屏幕绘制机制及硬件加速。
2022-11-19 00:03:18
2547
原创 项目维护几年了,为啥还这么卡?
对用户来讲就是界面不流畅,滞顿。场景如下1.视频加载慢,画面卡顿,卡死,黑屏2.声音卡顿,音画不同步。3.动画帧卡顿,交互响应慢4.滑动不跟手,列表自动更新,滚动不流畅5.网络响应慢,数据和画面展示慢、6.过渡动画生硬。7.界面不可交互,卡死,等等现象。
2022-11-04 09:21:54
625
原创 Android组件化开发(二)--网络请求组件封装
前面一篇文章我们讲解了maven私服的搭建,maven私服在组件化框架中有一个很重要的地位就是可以将我们的lib库放到局域网中,供公司其他开发者使用,实现类库的分享。下面是这个系列准备实现的一个组件化实战项目框架笔者打算从下往上依次来实现我们项目中的组件,毕竟地基稳固了,房子才可以搭的很结实。注意:这里不会对封装代码进行长篇大论,主要还是以思路点拨的方式进行,如果需要看完整代码的可以移步到github。
2022-11-03 10:26:35
1841
原创 插件化?好像也就那么回事
想必大家都知道,在 Android 系统中,应用是以 Apk 的形式存在的,应用都需要安装才能使用。但实际上Android 系统安装应用的方式相当简单,其实就是把应用 Apk 拷贝到系统不同的目录下、然后把 so 解压出来而已。:系统应用:系统应用/data/app:用户应用:Java 代码字节码res:资源文件lib:so 文件assets:静态资产文件:清单文件其实 Android 系统在打开应用之后,也只是开辟进程,然后使用加载至进程中,执行对应的组件而已。
2022-11-01 14:11:28
428
原创 毕业5年了还不知道热修复?
热修复到现在2022年已经不是一个新名词,但是作为Android开发核心技术栈的一部分,我这里还得来一次冷饭热炒。随着移动端业务复杂程度的增加,传统的版本更新流程显然无法满足业务和开发者的需求,热修复技术的推出在很大程度上改善了这一局面。国内大部分成熟的主流 App都拥有自己的热更新技术,像手淘、支付宝、微信、QQ、饿了么、美团等。可以说,一个好的热修复技术,将为你的 App助力百倍。对于每一个想在 Android 开发领域有所造诣的开发者,掌握热修复技术更是必备的素质。热修复。
2022-10-31 11:22:01
282
原创 Android组件化开发--从零开始带你手写一个企业级彻底组件化项目
本系列文章,将会带大家从零开始写一个彻底组件化的项目,希望大家可以从这个系列有所收获,谢谢
2022-07-27 14:20:50
594
原创 Github源码解读之——Banner
源码地址:https://github.com/youth5201314/banner1.整体分析 一个banner轮播图分:轮播和指示器轮播部分:用的是ViewPager,参数分析:默认背景图,轮播延迟时间,是否自动播放,是否可滑动,滑动时间,当前item,上个postion。private int bannerBackgroundImage;private i...
2019-01-17 17:29:23
936
1
原创 Material Design之AppBarLayout+CoordinatorLayout+CollapsingToolbarLayout+banner
先来看下效果图:一. AppBarLayout.通过查看源码可以知道 AppBarLayout继承自LinearLayout,默认布局方向为垂直方向。其实AppBarLayout是在LinearLayout的基础上添加了一些材料设计的概念,它可以让你定制一些特殊的行为。比如子view随着定制了特定layout_behavior的控件滑动而做出相应的动作。该控件可以理解为一个ScrollVie...
2019-01-08 15:02:29
574
1
转载 Material Design 之 Toolbar 开发实践总结
转载自:https://www.jianshu.com/p/e2ae6aaff696 一.前言2014年谷歌IO峰会上,谷歌推出了一套全新UI设计方案:MaterialDesign。其酷炫的视觉风格,让不少android码农看到了福音。同时也提供了一套MaterialDesign组件用于开发使用。其中最为大家熟悉的应该就是我们今天的主角ToolBar了。、二.简介:Tool...
2019-01-07 17:11:03
123
转载 Android状态栏微技巧,带你真正理解沉浸式模式
原文:https://blog.csdn.net/guolin_blog/article/details/51763825版权声明:本文为博主原创文章,转载请附上博文链接!记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解。其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发起的。因为Android...
2019-01-07 16:06:46
276
转载 Android 7.0 行为变更 通过FileProvider在应用间共享文件吧
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/72859156 本文出自张鸿洋的博客本文已在我的公众号hongyangAndroid原创首发,文章合集。一、概述之前项目的新特性适配工作都是同事在做,一直没有怎么太关注,不过类似这些适配的工作还是有必要做一些记录的。对于Android 7.0,提供了非常多的变化...
2018-12-05 15:00:03
232
转载 Android粒子篇之Bitmap像素级操作
张风捷特烈 关注2018.11.18 06:48* 字数 1307 阅读 753评论 3喜欢 13零、前言1.粒子效果的核心有三个点:收集粒子、更改粒子、显示粒子2.Bitmap的可以获取像素,从而得到每个像素的颜色值3.可以通过粒子拼合一张图片,并对粒子操作完成很多意想不到的效果4.本项目源码见文尾捷文规范第一条,文件为BitmapSplitView.java...
2018-12-03 17:48:42
672
转载 Android关于Color你所知道的和不知道的一切
本文转载自:https://www.jianshu.com/p/41862437cd04作者:张风捷特烈 1.做安卓的大多应该对颜色不太敏感,毕竟咱是敲代码的,颜色有设计师呢。2.不过作为一名在大学被颜色熏(陶)过四年的人,对颜色多少还是挺亲切的(虽然当时挺讨厌的)3.纪念也好,记录也罢,为它写篇总结也理所应当4.如果你觉得并不需要了解关于颜色的知识,那你可以将本文当做一篇科普文...
2018-11-30 10:56:36
1501
原创 android本地手机图片Glide加载
废话不多说,直接上代码:Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; ContentResolver cr = RecycleViewGlideActivity.this.getContentResolver(); Cursor cursor = cr.query(u...
2018-11-23 16:08:12
3147
原创 ObjectAnimator 基本使用
为了能让动画直接与对应控件相关联,以使我们从监听动画过程中解放出来,谷歌的开发人员在 ValueAnimator 的基础上,又派生了一个类 ObjectAnimator;该类可以使用ValueAnimator类中的所有方法。又重新写了几个方法,比如 ofInt(),ofFloat()等,其中比较关键的方法是ofFloat()。我们先看看利用 ObjectAnimator 重写的 ofF...
2018-11-22 15:29:56
665
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人