Android 进阶
文章平均质量分 94
Android开发一些中高级知识归总
乂星人
一个程序员的故事,专注移动互联网。
展开
-
Android注解处理器APT技术探究
说起注解处理器,Android程序员都比较兴奋,因为在开发过程中我们常用的一些明星框架,例如ButterKnife、EventBus、Dagger以及阿里的ARouter都采用是注解处理器技术。简单注解,简单的api,超高的性能等诸多优点,本文就带你从整体出发探讨以下APT技术是怎么玩的。什么是APTAPT全称“Annotation Processing Tool”,即注解处理器,是javac的一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,并根据注解自动生成代码,帮助开发者原创 2021-05-19 14:38:18 · 570 阅读 · 2 评论 -
浅谈Android编译打包流程
作为移动开发的我们平时关注更多的关注业务上的实现和技术的提升,而技术的提升也是为了更好的维护好我们的业务。但是我们很少关注有关apk的一些问题:一个apk的内部构造有哪些?一个apk是怎么从我们的java代码或者kotlin工程编译出来的?以及apk编译需要哪些步骤?如果把apk的编译过程研究透了,那将会继续拓宽我们的技术栈。本文就浅谈一下Android项目编译成apk的内部流程。apk是啥玩意儿APK是Android Package的缩写,即Android安装包。.apk文件其实就是一个压缩包,把文原创 2021-03-31 23:46:46 · 995 阅读 · 0 评论 -
Android开发之onTouch事件的分发拦截消费机制探究学习
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);原创 2016-09-15 17:46:55 · 1609 阅读 · 0 评论 -
Android媒体库你了解多少
Android系统中有一个媒体库,这个大家应该有所了解,平时在开发过程中如果不涉及媒体文件(图片、音频、视频)这块则很少接触到。有些时候我们在本地添加一张图片,但是在相册中却无法搜索到,这里主要原因就是没有通知系统媒体库刷新导致的。本篇我们就探讨下Android上媒体库的这些事。为什么通知媒体库后,媒体库里就能找到了呢?兴许你还会遇到一种情况,就是明明相册里可以发现这张图片,可是到图片的具体路径...原创 2020-04-05 23:43:38 · 3592 阅读 · 0 评论 -
Android开发混淆的那些事
混淆想必大家都不陌生,android上用的这一套混淆规则和java混淆几乎是一样的。为何需要混淆呢?简单的说,就是将原本正常的项目文件,对其类,方法,字段,重新命名,a,b,c,d,e,f…之类的字母,达到混淆代码的目的,这样反编译出来,结构乱糟糟的,给反编译者制造一些代码阅读的麻烦。ProGuard简介ProGuard是2002年由比利时程序员Eric Lafortune发布的一款优秀的开...原创 2020-04-05 23:40:10 · 537 阅读 · 0 评论 -
Android项目中Git忽略文件.gitignore的写法
又到周五了,这周过的最快,因为只有三天,就总结一个简单的东西吧——Android项目中Git忽略文件.gitignore的写法。为什么要有忽略文件在push项目的时候只需要上传必要的项目代码部分,有些编辑器构建项目时临时生成的或者重要的签名文件是没有必要上传到远程的,即忽略这些文件的上传。这样既能快速的上传项目也保证了远程项目的简洁性,同时也保证了项目的安全性。创建git忽略文...原创 2018-05-04 20:15:08 · 1829 阅读 · 0 评论 -
关于Android虚拟机的那些事儿
早前android给人的印象是卡,慢,无;但是从6.0依赖的手机似乎人们不再提android的这些诟病了,无非来一句“不高端”。知道什么原因吗?有同学说,android一个劲的提升内存,和CPU的升级,但这只是其中的表象,为什么会提升内存呢?认识一下Jvm、Dalvik和Art,你将一切都明白了。什么是JVMJVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序,JAVA在编译后会生成类似于汇编语言的.class字节码文件,与C语言编译后产生的汇编语言不同的是,C编译成的原创 2021-03-18 21:23:14 · 878 阅读 · 0 评论 -
来,同学,坐下,谈谈对Dex文件的认识
针对dex文件,做android开发的应该都见过,没见过也听说过,至少听说过65536吧,本篇文章就带大家认识以下dex。什么是dex文件大家知道JVM 是 JAVA 虚拟机,用来运行 JAVA 字节码程序。Dalvik 是 Google 设计的用于 Android平台的运行时环境,适合移动环境下内存和处理器速度有限的系统。ART 即 Android Runtime,是 Google 为了替换 Dalvik 设计的新 Android 运行时环境,在Android 4.4推出。这块内容可参看我之前的一篇原创 2021-03-18 17:50:00 · 2196 阅读 · 2 评论 -
Android进程间通信之八面玲珑
你了解android的进程间通信吗?提到进程间通信,这是android开发中很重要的一环,也是面试高频知识点,本文总结一下进程间通信的几种方式,把这块知识系统起来。什么是进程间通信进程间通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。如何开启多进程正常情况下,在Android中多进程是指一个应用中存在多个进程的情况,因此这里不讨论两个应用之间的多进程情况。在Android中上层应用原创 2021-03-10 15:43:13 · 1919 阅读 · 5 评论 -
Android开发Style和Theme精准知识面总结,看到的赶紧收藏!
这块知识大部分同学都知道,但是同样比较碎,比如说定义一个Style,到底该用于主题还是用于某个view?再比如说Style的继承应该怎么用?等等…本文我将尽可能全面的将这块知识点总结一下。资源位置开发过程中style和theme等这些资源文件会放在res/values/文件夹下,都是xml文件。attrs.xmlcolors.xmldimens.xmlstring.xmlarrays.xmlstyles.xmlthemes.xml以上这些xml文件项目中没有的话可以新建,xml命名原创 2021-03-07 21:35:12 · 1060 阅读 · 0 评论 -
View坐标的那些琐碎知识点你知道吗
Android开发过程中,针对View视图坐标系必要时获取坐标,其重要性不言而喻。坐标系分为屏幕坐标系和View视图坐标系,前者用于真实坐标,后者用于获取相对坐标和宽高。Android视图坐标系android中的坐标系有两种:一种是Android坐标系,是相对屏幕原点来说的,也可以叫绝对坐标;另外一种是视图坐标系,是根据当前view以及父布局来说的。Android坐标系以屏幕左上角原点为中心,x轴向右为正,y轴向下为正。视图坐标系根据view自身相关属性计算view所处坐标。获取View原创 2021-03-04 18:15:43 · 1510 阅读 · 13 评论 -
Android开机启动的那些事
系统开机启动过程Android系统的启动,主要是指Android手机关机后,长按电源键后,Android手机开机的过程。从系统角度看,Android的启动程序可分为:bootloader引导装载与启动Linux内核启动Android系统其中启动Android系统过程又有以下过程:启动Init进程启动Zygote启动SystemService启动Launcherandro...原创 2020-04-27 18:37:18 · 1592 阅读 · 2 评论 -
针对极光推送送达率的探究
前言前段时间内部以应用对接了极光推送,开发人当然是我咯,根据多年对极光的认可这块对接还是很有信心的。毕竟是内部系统,送达率要求还是很高的,业务实时性需要,所以产品这块非常看重送达率,我对他说极光的实时送达率很客观的,有实验室数据,但是他还是希望我帮他提供一个可靠的数据,下边是我对实时送达率的一个分析。当然,针对推送作为开发的我更关注,整体送达率(准确送达率),文中也有提到,最简单可靠的方式就是...原创 2020-04-22 17:27:41 · 1638 阅读 · 0 评论 -
WebView高度自适应方案探究
Android项目开发中针对webview避免不了混合开发模式,可Android上的webview又很不争气,几乎每个Android版本都有webvie的改动,在国内这种鱼龙混杂环境下出乎意料的问题又很多,这次就谈谈webview高度自适应的问题。问题在Android开发生涯中想必大家都遇到过,webview在有些时候展示不完整,在某些时候底部有一片空白,有些时候始终又滑不到底。。。导致这个...原创 2020-04-14 13:42:17 · 5724 阅读 · 3 评论 -
Android开发View滑动冲突处理
最近在重构一个老项目,遇到ScrollView嵌套WebView的场景,因为WebView加载的网页并不是自适应,所以导致在滑动网页的时候异常卡顿,很明显是滑动冲突了,解决的同时,顺便做一下记录吧。冲突场景滑动冲突场景可简单分为两种:外部和内部的滑动方向不一致外部和内部的滑动方向一致示图如下:其他情况的滑动冲突都是在这两种冲突的基础上延伸出来的,或者以上两种场景的嵌套,面对这种...原创 2020-04-11 00:02:22 · 594 阅读 · 0 评论 -
对象拷贝性能对比分析
对象拷贝可分为浅拷贝和深拷贝,在开发过程中深拷贝不是随处可见,大部分是引用的赋值,也即是内存地址的引用。如果简单的类似Student studen1 = student0这样便认为复制了一份,这就大错特错了,有些时候你会莫名的发现studen1没有任何操作里面的属性却发生变化了,不用说一定是student0在某个时候被修改了,因为这两个对象引用的是一个地址的内容。开发过程中,因为嵌套过深,对象中转...原创 2020-04-05 23:52:48 · 842 阅读 · 0 评论 -
View手势GestureDetector使用
开发同学都知道自定义view的时候可以重写onTouch()方法,进而扩展按下、移动、松开这三个函数,这也是常用的形式。但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦。Android其实有一个手势库——GestureDetector,已经为我们封装了一些常用的手势方法,接下来就总结一下GestureDetector的使用和总结。GestureDetector使用:1....原创 2020-04-05 23:19:31 · 569 阅读 · 0 评论 -
Android开发Handler消息机制深入探究
提到Handler,大家不免的会想到更新主界面或者延时操作。其实handler在安卓开发中扮演的主要角色就是随时更新主界面的。为什么要采用handler来更新主界面呢,这里又要谈到主线程的不安全原则。原创 2016-07-27 15:48:38 · 459 阅读 · 0 评论 -
Android开发之进程间通信AIDL的探究和学习
AIDL (Android Interface Definition Language) 顾名思义就是android接口定义语言,用于生成可以在Android设备上两个进程之间进行通信(interprocess communication, IPC)的代码。原创 2016-07-30 22:27:35 · 553 阅读 · 0 评论 -
View创建的那些事儿
文章目录:理解几个概念屏幕显示过程UI界面层级结构从setContentView说起01PhoneWindowsetContentView02PhoneWindowmLayoutInflaterinflate总结本来是想总结view的绘制测量过程,但是一开始就来个measure、layout、draw总感觉让人有点丈二的和尚摸不着头脑。什么时候添加的这原创 2018-02-01 03:19:22 · 358 阅读 · 0 评论 -
Android多CPU适配总结
这两天准备重构一个好几年的老项目,项目中使用了NDK,但是莫名的报ABI的错误,最终找出问题是项目中.so文件放的位置不对。ABI的概念之前也了解过,今天总结一下。理解几个概念NDK 即Native Development Kit,原生开发工具集,因此又被Google称为“NDK”,Android开发中NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。好处是方便调...原创 2018-03-21 23:41:12 · 2492 阅读 · 0 评论 -
Android屏幕适配解决方案
学习android避免不掉要进行屏幕适配,因为android碎片化极其严重,尤其是在国内这种环境下,不受google所约束,奇葩屏幕更是多种多样,由于android的开源性,从小到手表,大到电视以及企业影院屏幕,不得已给开发者更多的任务和困难去进行处理,没办法,来就来了,总结一下吧。相关概念屏幕相关及换算:屏幕尺寸: 手机对角线的物理尺寸,单位英寸(inch),1英寸=2.54cm...原创 2018-05-21 22:39:06 · 1764 阅读 · 0 评论 -
Android设备信息的那些事
Android开发过程中避免不了要获取一些与设备相关的信息,比如deviceId,判断网络类型等。有时候我们到手机设备信息界面看到一个陌生的代号也是一头雾水,虽然有一种似曾相识的感觉,但是确实不知道是干什么,本篇就为你揭开这层面纱。科普几个概念常规IMEIMEIDIMSIICCID基带版本内核版本AndroidDeviceIdAndroidId序列号IMEI国...原创 2019-04-26 21:13:05 · 1177 阅读 · 0 评论 -
Android开发之Context认识和运用
谈到Context,做Android的可以说是无人不知无人不晓,例如“XXXXActivity.this”、“getApplicationContext()”、“getContext()”等多种形式。虽然大家都知道,可是真正的去用好它也是一门艺术,深入不全免不了也要入坑。之前我们项目上新增了一个悬浮球功能,获取的是全局Application的WINDOW_SERVICE,然而那个悬浮球的实例却采...原创 2019-05-16 22:52:21 · 736 阅读 · 0 评论