
android进阶
文章平均质量分 94
粗鲁先生
基础不牢,地动山摇!
展开
-
Android进阶9:手写Bufferknife(编译时注解)
说到Bufferknife,相信基本都用过。在Activity中使用:class ExampleActivity extends Activity { @BindView(R.id.title) TextView title; @BindView(R.id.subtitle) TextView subtitle; @BindView(R.id.footer) TextView fo...原创 2019-10-27 12:26:25 · 446 阅读 · 0 评论 -
Android中级工程师面试总结
年关将近,很多小朋友都在考虑换个坑蹲蹲,我也不例外,实际上我定义的初中高级开发对应如下:初级工程师 1-3年中级工程师 3-5年高级工程师 5年以上初级工程师:前两年基本都是——多处理一些场景,也就是扩展广度,在两年到三年的这一年是很关键的,需要扩展广度的同时,还要扩展深度,不过这个深度具体是大到什么程度,就根据个人情况了。举个例子:我用了一个框架,这个框架怎么用?哪种场景使用?为...原创 2019-01-25 16:18:40 · 1944 阅读 · 0 评论 -
Android进阶8:SharedPreferences原理分析
关于SharePreferences(以下简称SP)的使用,相信从刚开发Android都开始使用了,但是对于SP的原理以及SP的缺点可能很多人没有系统的认知。首先说一下SP的结论:容易因此ANR:SP不适合存储数据量很大的信息;同时JSON以及HTML最好也不用SP存储,因为特殊字符转义是非常消耗性能的。全量写入:在apply或者commit的时候,会先添加信息到内存中,在开启子线程,将内...原创 2019-01-13 17:45:10 · 759 阅读 · 0 评论 -
Android进阶7:APK瘦身(减少APK体积)
对于Android开发来说,关于减少APK体积的重要性,就不再多说了,直接进入正题吧。首先对于APK瘦身,分为两种:压缩资源,压缩代码1:移除无用资源和无用代码移除无用资源分为两种:手动移除和自动移除手动移除:Android studio提供了相应的检测工具 Link : Analyze > Inspect Code在控制台的Inspection Results中显示出需要更改...原创 2018-12-23 13:40:30 · 1381 阅读 · 0 评论 -
Android进阶7:内存优化——LeakCanary原理分析
好的项目离不开健壮的代码,对于想要写出健壮的代码,解决内存泄漏是必须的。对于LeakCanary,对于大多人是不陌生的,也就是检测内存泄漏的工具。可能在代码中我们会这样引入LeakCanary: //检查leakCanary和APP是否在同一个进程,如果是同一个进程就返回,不在同一个进程,就注册。 //因为不再同一个进程,不会对APP进程造成消极影响(如:APP进...原创 2018-12-22 13:33:21 · 1613 阅读 · 2 评论 -
Android进阶3:Activity源码分析(2) —— Activity启动和销毁流程(8.0)
上篇文章讲述了app从启动创建Activity调用onCreate,onStart, onResume方法,这篇文章讲述一下Activity启动的另一个切入点:startActivity方法,启动Activity。Android进阶3:Activity源码分析(1) —— Activity启动流程(8.0)通过上一篇文章,我们总结一下: 1:ActivityThread是通过Instru...原创 2018-09-14 17:07:32 · 3439 阅读 · 0 评论 -
Android进阶3:Activity源码分析(1) —— Activity启动流程(8.0)
前言关于Activity的源码分析,看了足足有半个月,理由就是: 1:Activity源代码很多,逻辑很复杂 2:下班再能加班学习,礼拜天抽空学习源码 至于为什么看源码:因为偶尔看到一句话:不懂Activity的onCreate的内部源码,你敢说你是Android开发程序猿?!其实关于这篇文章,我想了很久,不太敢贸然写,因为牵涉的类有点多并且复杂,怕理解出错,给各位小伙伴带来困扰,经...原创 2018-09-13 20:58:49 · 3448 阅读 · 0 评论 -
Android进阶3:Activity源码分析(3) —— setContentView分析(8.0)
在看setContentView源码之前,就知道,PhoneWindow, DecorView这些东西,不知道之间的联系,上周末加班看了下源码,慷慨颇多,“源码面前,无所遁形。”Hierarchy View 的使用在看是之前我们先看下Android studio的Hierarchy View, 这是AS自带的View调试工具,怎样使用呢? 打开步骤:Tools —— Android ...原创 2018-09-17 16:46:48 · 468 阅读 · 0 评论 -
Android进阶2:线程和线程池(2)—— HandlerThread原理解析
HandlerThread是属于Android异步线程模块的一部分,上一篇是AsyncTask的源码: Android进阶2:线程和线程池(1)—— AsycTask原理解析如果你没看过handler消息机制,建议先学习下handler消息机制: Android进阶1:Android的消息机制记得之前刚接触android的之后,只知道HandlerThread内部原理:Handler...原创 2018-08-02 20:31:56 · 729 阅读 · 0 评论 -
Android进阶2:线程和线程池(3)—— IntentService原理解析
IntentService也是属于Android异步线程模块的一部分,上一篇是AsyncTask的源码: Android进阶2:线程和线程池(1)—— AsycTask原理解析先来看下IntentService的用法:需求: 实现一个IntentService实现类,定义一个成员变量count, 开启线程,回调给UI主线程, 代码如下:/** * Created by...原创 2018-08-02 19:30:33 · 357 阅读 · 0 评论 -
Android进阶2:线程和线程池(1)—— AsycTask原理解析
Android不允许UI主线程做耗时操作,不允许子线程刷新UI,声明UI控件单线程模式,至于为什么看上篇文章: 这些问题都催生了链接子线程和主线程Handler的诞生,然而Google也为我们提供了一个老牌的Thread + handler的神器:AsyncTask。AsyncTask用法:先来看下AsyncTask 的用法: 1. 衍生类的三个泛型限制:Params :doI...原创 2018-08-01 10:33:50 · 574 阅读 · 0 评论 -
Android进阶1:Android的消息机制
Android消息机制主要是指Handler的运行机制。在开始之前先问下,考虑以下几个问题:为什么需要handler? Android不建议在UI主线程做耗时操作,因为这样的话,可能会造成ANR, 那么,如果需要做耗时操作,需要开启线程做耗时操作,但是如果我们想更新Ui 呢,此时Handler就诞生了,系统之所以提供handler,主要是为了解决子线程中无法访问UI线程的矛盾。那么问题而就...原创 2018-07-29 16:21:14 · 416 阅读 · 0 评论