Android技术整理
文章平均质量分 93
整理各种技术知识
李一恩
Android Developer|习惯撸码前泡一杯生椰拿铁
展开
-
第十七章 Kotlin入门语法(巧用内置函数let、also、with、run、apply大大提高开发效率)
巧用内置函数let、also、with、run、apply大大提高开发效率原创 2022-05-01 11:48:36 · 921 阅读 · 1 评论 -
第十六章 Kotlin入门语法(空安全、类型转换 & 相等性判断)
Kotlin被Google官方认为是Android开发的一级编程语言。今天,我将主要讲解,关于Kotlin的一些实用语法糖,主要包括:- 范围使用:in、downTo、step、until- 类型检查 & 转换:is、智能转换、as- 相等性:equals()、== 、===- 空安全原创 2022-05-01 11:42:53 · 793 阅读 · 0 评论 -
第十五章 Kotlin入门语法(类使用)
今天,我将主要讲解kotlin中的类的所有知识。原创 2022-04-18 08:11:11 · 857 阅读 · 1 评论 -
第十四章 Kotlin入门语法(类、变量 & 函数)
这是一份全面 & 详细的kotlin入门语法指南(类、变量 & 函数)原创 2022-04-13 10:50:27 · 830 阅读 · 0 评论 -
耗时整整3个月,我梳理了200道Android面试基础(下)【面试必考,全网最全,每天一遍】
本篇内容比较快捷短小。属于快问快答形式。大家可以下载下来,每天一遍。记住,答案只是引导,在回答完后发散自己的引导思维。去引申。原创 2022-04-07 20:22:38 · 1749 阅读 · 1 评论 -
耗时整整3个月,我梳理了200道Android面试基础(上)【面试必考,全网最全,每天一遍】
本篇内容比较快捷短小。属于快问快答形式。大家可以下载下来,每天一遍。记住,答案只是引导,在回答完后发散自己的引导思维。去引申。原创 2022-04-01 23:06:28 · 5019 阅读 · 2 评论 -
第十三章 杂七杂八
文章目录进程保活Android进程回收策略 及 进程优先级进程保活方案进程保活Android进程回收策略 及 进程优先级Android 进程回收策略(一种根据 OOM_ADJ 阈值级别触发相应力度的内存回收的机制)Android 系统将尽量长时间地保持应用进程,但随着打开的应用越多,后台应用进程也越多。容易导致系统内存不足。为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存...原创 2019-09-28 11:01:54 · 5245 阅读 · 0 评论 -
第十二章 Android第三方库源码
文章目录EventBusEventBus理解EventBus源码分析EventBus项目实战EventBusEventBus理解什么是EventBusEventBus使用EventBus & BroadcastReceiver & 观察者模式EventBus源码分析参考链接:EventBus源码解析EventBus官方原理图发布者(Publish...原创 2019-09-27 13:42:37 · 5048 阅读 · 0 评论 -
第十一章 WebView
文章目录WebView是什么?WebView的作用?WebView的内核?WebView与js交互方式?WebView会导致内存泄露吗?原因是什么?解决方式有哪些?WebView的优化方式?说说WebSettings & WebViewClient & WebChromeClient这三个类的作用 & 用法。有没有用过第三方WebView组件?讲一讲优势?你知道Hybrid...原创 2019-09-26 19:39:08 · 2392 阅读 · 0 评论 -
第十章 线程 / 进程 通信
文章目录AsyncTaskAsyncTask是什么?能解决什么问题给我谈谈AsyncTask的三个泛型参数作用 & 它的一些方法作用。给我说说AsyncTask的原理。你觉得AsyncTask有不足之处吗?Handler子线程一定不能更新UI吗?为什么Android系统不建议子线程访问UI?给我说说Handler的原理。Handler导致的内存泄露你是如何解决的?如何使用Handler让子...原创 2019-09-26 19:22:41 · 5600 阅读 · 1 评论 -
第九章 JNI
文章目录介绍一下NDK?什么是JNI?它主要用来干什么?Java Native方法如何和Native函数进行绑定的?JNI如何实现数据传递?如何全局捕获Native发生的异常?只有C/C++能编写Native库吗?你用JNI实现过什么功能吗?怎么实现的?介绍一下NDK?什么是JNI?它主要用来干什么?Java Native方法如何和Native函数进行绑定的?JNI如何实现数据传递?Ja...原创 2019-09-26 19:03:42 · 2056 阅读 · 0 评论 -
第八章 性能优化
文章目录内存优化ANR产生的原因是什么?oom是什么?产生原因?避免方式?内存泄漏是什么?产生原因?解决方式?谈谈你项目中内存优化的一些经验。启动优化什么是冷启动 & 热启动?启动流程?如何优化冷启动?如何提高启动速度?如何保证应用启动不卡顿?绘制优化自定义View注意事项?RecyclerView是什么?如何使用?如何返回不一样的Item?回收复用机制?ListView与ReccleVi...原创 2019-09-26 18:58:43 · 4277 阅读 · 0 评论 -
第七章 布局
文章目录说说Android中有哪些布局 & 特点?你知道布局文件到控件对象的过程吗?有这么一个布局需求,一个文本控件放在屏幕一半的一半的中间位置,你如何进行布局?LinearLayout,FrameLayout,RelativeLayout性能对比,为什么?并介绍使用场景?描述一下约束布局?你知道哪些布局优化的方案?如何检测布局深度?说说Android中有哪些布局 & 特点?你...原创 2019-09-25 19:12:43 · 2704 阅读 · 0 评论 -
第六章 图片
文章目录从网络加载一个10M的图片(大图加载),说下注意事项?有关Bitmap导致OOM的原因知道吗?如何优化?说一下三级缓存的原理?说说你平常会使用的一些第三方图片加载库,最好给我谈谈它的原理?Glide源码分析?如果让你设计一个图片加载库,你会如何设计?你对Bitmap了解吗?它在内存中如何存在?谈谈图片压缩?LruCache & DiskLruCache原理?你知道Android中处...原创 2019-09-26 16:23:37 · 3822 阅读 · 1 评论 -
第五章 网络 之 Android网络知识&框架
文章目录(一)描述一次网络请求的流程(二)TCP与UDP的区别(三)说一下三次握手,四次挥手的具体细节【画图】(四)client如何确定自己发送的消息被server收到?(五)HTTP报文结构(六)GET与PUT区别(七)Cookie与Session的联系&区别(八)描述一下HTTPS(九)HTTPS中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?(十)描述一下...原创 2020-04-11 21:33:40 · 3472 阅读 · 0 评论 -
第五章 网络 之 TCP/IP
描述TCP/IP四层协议与OSI七层模型?什么是TCP协议?UDP协议?它们的区别?描述一下http协议?说一下TCP/IP三次握手,四次挥手的具体细节?描述一下socket?socket与http?websocket 与 socket区别?描述一次网络请求的流程?http请求/响应报文结构?描述一下https?https中哪里使用了对称加密,哪里使用了非对称加密?什么是coo...原创 2019-09-10 20:16:45 · 4739 阅读 · 2 评论 -
第五章 网络 之 计算机网络
文章目录计算机体系结构计算机网络概念、组成与功能计算机网络分层结构一. 物理层二. 数据链路层组帧以太网MAC层链路层设备三. 网络层异构网络互联(互联网)路由与转发IPv4 & IPv6ARP、DHCP、ICMP协议路由协议网络层设备四. 传输层传输层寻址 && 端口TCP && UDP五. 应用层网络应用模型DNS、FTP、电子邮件(SMTP、POP3、...原创 2019-10-12 20:45:25 · 5649 阅读 · 0 评论 -
第四章 自定义组件、动画
1、描述一下View绘制流程View的绘制流程主要分为三步:按顺序依此是measure、layout、draw。measure:测量视图的大小,从顶层父View到子View递归调用measure()方法,measure()调用onMeasure()方法,onMeasure()方法完成测量工作。递归:父View先调用子View的测量方法,再测量自己layout:确定视图的位置,从顶层父V...原创 2019-10-04 08:57:47 · 4863 阅读 · 0 评论 -
第三章 存储
文章目录1、描述一下Android的本地数据存储方式?2、SharedPreferences如何性能优化,可以做进程同步吗?3、如何做SQLite升级?4、如何自己封装一个数据库框架?(解读greenDao)5、描述一下图片存储本地的方式?1、描述一下Android的本地数据存储方式?Android本地存储方式有3种,分别是SharedPreferences存储、文件存储和SQLite存储方式...原创 2019-06-16 08:43:59 · 2965 阅读 · 0 评论 -
第二章 Fragment
文章目录1、谈谈对Fragment的理解?Fragment为什么被称为第五大组件?2、Fragment加载到Activity的两种方式?3、Fragment生命周期?4、Fragment与Activity通信方式?Fragment之间数据传递?5、Fragment切换方式及懒加载?6、遇到过哪些关于Fragment的问题,如何处理的?1、谈谈对Fragment的理解?Fragment为什么被称为...原创 2019-06-08 07:40:00 · 3619 阅读 · 0 评论 -
第一章 四大组件
1、介绍一下四大组件Activity:是一个应用程序组件,提供一个界面,可以与用户交互来实现功能。Service(服务):提供需在后台长期运行的服务,无用户界面Content Provider(内容提供者):实现不同应用间进行数据交互&共享BroadcastReceiver(广播接收器):用于接收应用发出的广播信息,并作出响应2、谈谈对Activity生命周期的理解Activi...原创 2019-06-03 14:14:59 · 8671 阅读 · 2 评论 -
第十一章 Java I/O
文章目录一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容五、对象操作序列化Serializabletransient六、网络操作InetAddressURLSocketsDatagram七、NIO流与块通道与缓冲区1. 通道2. 缓冲区缓冲区状态变量文件 NIO 实例选择器1. 创建选择器2...原创 2020-04-11 21:34:24 · 1662 阅读 · 0 评论 -
第六章 Java数据结构和算法 之 其他数据结构(二)
文章目录一. 数组与链表1.1 数组1.2 链表1.3 数组与链表区别二. 堆 & 栈2.1 堆2.2 栈2.3 Java中堆 & 栈三. 树 & 图3.1 二叉树3.1.1 定义3.1.2 存储结构3.1.3 遍历3.1.4 B+树3.2 图四. 其他4.1 深拷贝和浅拷贝一. 数组与链表1.1 数组1.2 链表1.3 数组与链表区别内存存储:① 数组从栈...原创 2020-04-11 21:07:11 · 991 阅读 · 0 评论 -
第八章 性能优化 之 其他优化(四)
文章目录第八章 性能优化 之 其他优化(四)(一)网络优化(1)网络优化的必要性(2)分析网络连接的工具1、Network Monitor2、网络代理工具(3)网络连接的优化1、思想2、设计(1)接口设计(2)网络缓存(3)打包网络请求(4)监听相关状态(5)弱网测试&优化(6)服务器优化(4)Http与Https对访问速度(性能)的影响1、网络耗时增加2、计算耗时增加(二)电池使用优化(...原创 2020-04-11 21:28:42 · 3362 阅读 · 0 评论 -
第十章 进程间的通信 之 多进程(四)
文章目录(一)多进程基础1.1)多进程定义1.2)进程等级(1)前台进程(2)可见进程(3)服务进程(4)缓存/后台进程(5)空进程1.3)进程创建(1)私有进程(2)全局进程(3)初始化1.4)UID机制与共享进程(1)UID机制(2)进程共享a.一个application中共享service,provider或者activity等数据b.通过共享UID,使拥有同一个UID的多个APK可以配置成...原创 2020-04-11 21:30:45 · 4248 阅读 · 1 评论 -
第四章 自定义组件、动画
第三章 自定义组件、动画(一)自定义View1.1) onMeasure:对当前View的尺寸进行测量protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小int widthMode = MeasureSpec....原创 2020-04-11 21:20:26 · 7715 阅读 · 6 评论 -
第十二章 进程保活
文章目录(一)Android回收策略1.1)进程优先级1、前台进程 —— Foreground process2、可见进程 —— Visible process3、服务进程 —— Service process4、后台进程 —— Background process5、空进程 —— Empty process1.2)OOM_ADJ1.3)进程被杀死场景(二)进程保活方案2.1)提升进程优先级,降低...原创 2020-04-11 21:32:48 · 3655 阅读 · 0 评论 -
第三章 存储
文章目录第四章 存储(一)Android 5种保存数据的方法(1)方法1:SharedPreferences 用户偏好设置1.1)简介——Android最简单数据存储方式1.2)基本使用1.3)工具类——对SharedPreferences功能进行封装1.4)数据的存储位置与格式1.5)存取复杂类型数据1.6)设置数据文件的访问权限1.7)SharedPreferences源码分析(1)SP存储格...原创 2020-04-11 21:18:06 · 6158 阅读 · 4 评论 -
第二章 Fragment
文章目录第二章 Fragment(一)定义(二)作用(三)生命周期(1)生命周期方法详解(2)生命周期调用场景(3)Fragment与Activity生命周期对比(四)将Fragment添加到Activity(1)在Activity的layout.xml布局文件中静态添加(4.2)在Activity的.java文件中动态添加(五)Activity与Fragment通信(1)Activity传递数据...原创 2020-04-11 21:17:16 · 6692 阅读 · 4 评论 -
第十一章 WebView
文章目录(一)WebView使用基础1、简介2、使用2.1)WebView类常用方法2.1.1)加载url2.1.2)WebView状态2.1.3)关于前进/后退网页2.1.4)清除缓存数据2.2)WebView常用工具类2.2.1)WebSetting类(1)配置(2)设置缓存2.2.2)WebViewClient(1)shouldOverrideUrlLoading(2)onPageStart...原创 2020-04-11 21:31:43 · 3317 阅读 · 0 评论 -
第十章 进程间的通信 之 Handler机制(三)
文章目录第十章 进程间的通信 之 Handler机制(二)(一)简介(二)重要概念1、主线程(UI线程、MainThread)2、子线程(工作线程)3、消息(Message)4、消息队列(Message Queue)5、处理者(Handler)6、循环器(Looper)(三)使用方式3.1)Handler.sendMessage()方式1:新建Handler子类(内部类)方式2:匿名内部类3.2)...原创 2020-04-11 21:29:21 · 5546 阅读 · 1 评论 -
第一章 四大组件 之 BroadcastReceiver(四)
文章目录第一章 四大组件第四组件 Broadcast Receiver(1)定义(2)作用(3)应用场景(4)实现原理(5)使用流程:5.1 自定义广播接受者BroadcastReceiver5.2 广播接收器注册(1)静态注册(2)动态注册5.3 广播发送者向AMS发送广播(1)广播的发送(2)广播类型a)普通广播(Normal Broadcast)b)系统广播(System Broadcast...原创 2020-04-11 21:15:59 · 4911 阅读 · 0 评论 -
第一章 四大组件 之 Service(二)
文章目录第一章 四大组件第二组件 Service(一)基础知识1.定义2.作用3.特点(二)生命周期1.生命周期常用方法2.生命周期方法具体介绍1、startService()2、stopService()3、bindService()4、unbindService()3.应用场景1、启动服务——只使用startService2、绑定服务——只使用BindService3、启动服务后绑定——sta...原创 2020-04-11 21:15:26 · 6809 阅读 · 6 评论 -
第五章 网络 之 计算机网络基础(一)
文章目录(一)计算机网络基础知识:从一次完整的网络请求过程分析(1)域名解析1.1)域名与ip地址1.2)域名系统(DNS——Domain Name System)a)DNS本质b)域名的特点c)一次请求域名解析过程1.3)以Chrome浏览器为例,Chrome解析域名对应的IP地址(2)TCP的三次握手四次挥手2.1)准备知识2.2)三次握手2.3)四次挥手2.4)面试问题(3)建立TCP连接后...原创 2020-04-11 21:22:44 · 9775 阅读 · 3 评论 -
第十章 进程间的通信 之 Java/Android多线程开发(二)
(一)Java 多线程开发(二)Android 多线程开发2.1)基础使用1、继承Thread类(1)简介Thread类是Java中实现多线程的具体类,封装了所需线程操作。在Android开发中用于实现多线程。注:线程对象&运行线程区别线程对象是运行线程的实体,用来控制线程行为的唯一方式。线程对象通过线程类实例化创建,负责控制线程的状态,如:运行、睡眠、挂起/停止。优点...原创 2020-04-11 21:13:32 · 14959 阅读 · 18 评论 -
第一章 四大组件 之 补充
文章目录第一章 四大组件补充:Context(一)Context是什么?1.1)广义理解1.2)官方注释1.3)类关系(1)ContextWrapper类(2)ContextThemeWrapper类(3)ContextImpl类(二)Context能做什么?(三)Context作用域(四)Context的获取方式(五)Context内存泄露5.1)内存泄露情况1、错误的单例模式2、View持有A...原创 2020-04-11 21:33:24 · 5245 阅读 · 2 评论 -
第一章 四大组件 之 ContentProvider(三)
第一章 四大组件第三组件 Content Provider(一)定义内容提供者(二)作用实现各个app应用/进程间进行数据交互&共享(跨进程通信)ContentProvider=中间者角色(搬运工),真正存储&操作数据的数据源为原来存储数据的方式(数据库(sqlite)、文件、XML、网络等等)ContentProvider一般为存储和获取数据提供统一的接口,可以在不...原创 2020-04-11 21:15:43 · 5043 阅读 · 4 评论 -
第十章 进程间的通信 之 多线程基础(一)
文章目录(一)多线程基础知识1、线程(1)定义(2)作用(3)状态及状态转换(4)分类4.1)守护线程4.2)非守护线程(用户线程)a.主线程(UI线程)b.子线程(工作线程)4.3)守护线程 & 非守护线程的区别(5)优先级5.1)表示5.2)设置2、多线程2.1)定义2.2)原则(1)多线程编程两大原则:(2)解决方案——1个主线程+n个工作线程2.3)实现方式2.4)线程调度(1)调...原创 2020-04-11 21:11:27 · 5696 阅读 · 3 评论 -
第九章 JNI
文章目录第九章 JNI一.JNI与NDK简介1、JNI(协议)(1)定义(2)作用2、NDK(工具)(1)定义(2)作用(3)特点3、JNI与NDK关系二.具体使用(1)NDK集成开发流程1、配置Android NDK环境2、关联Android Studio项目与NDK3、创建JNI类声明native方法4、生成.h文件5、创建本地代码文件6、创建Android.mk文件 & Applic...原创 2020-04-11 21:28:55 · 3925 阅读 · 0 评论 -
第八章 性能优化 之 布局优化(三)
文章目录第八章 性能优化 之 布局优化(三)(一)消除卡顿(1)16ms原则(2)卡顿原因及优化1、过于复杂的布局2、过渡绘制(overdraw)3、UI线程复杂运算4、频繁GC(二)Layout布局优化(1)分析布局层级图工具Hierarchy Viewer(2)优化方案a.尽量减少布局层级和复杂度b.善用Tag标签(三)自定义View优化(1)onDraw优化(2)requestLayout优...原创 2020-04-11 21:27:54 · 4359 阅读 · 3 评论