![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 73
因为我的心
会有莫名的伤感,会有突如其来的运气,一切来得恰到好处!
展开
-
【无标题】
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S原创 2022-10-26 18:35:12 · 240 阅读 · 1 评论 -
卡顿分析与布局优化
1、App层面监控卡顿systrace可以让我们了解应用所处的状态,了解应用因为什么原因导致的。若需要准确分析卡顿发生在什么函数,资源占用情况如何,目前业界两种主流有效的app监控方式如下:1、 利用UI线程的Looper打印的日志匹配;2、 使用Choreographer.FrameCallback;Looper日志检测卡顿Android主线程更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。简单来说,Android使用消息机制进行UI更新,UI线程有个L原创 2021-03-21 16:09:44 · 246 阅读 · 0 评论 -
APP 启动优化
一、前言:用户希望应用能够及时响应并快速加载。启动时间过长的应用可能会导致用户在对应用给出很低的评分,甚至完全弃用。1、启动流程①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;②system_server进程接收到请求后,向zygote进程发送创建进程的请求;③Zygote进程fork出新的子进程,即App进程;④App进程,通过Binder IPC向sytem_server进程发起attachApplica原创 2021-03-21 15:25:03 · 392 阅读 · 0 评论 -
Retrofit面试
1、设计模式外观模式,构建者模式,工厂模式,代理模式,适配器模式,策略模式,观察者模式2、Retrofit概括Retrofit就是一个网络请求框架的封装,底层的网络请求默认使用的Okhttp,本身只是简化了用户网络请求的参数配置等,还能与Rxjava相结合,使用起来更加简洁方便。App应用程序通过Retrofit请求网络,实际上是使用Retrofit接口层封装请求参数,之后由OkHttp完成后续的请求操作。在服务端返回数据之后,OkHttp将原始的结果交给Retrofit,R原创 2021-03-17 15:21:33 · 634 阅读 · 1 评论 -
RxJava面试
1、使用步骤2、RxJava 如何实现线程切换?subscribeOn 是通过新建 Observable 的方式,使用 OnSubscribe 类的方式去做到线程切换的。observeOn 是通过 operator 操作符的形式去完成线程切换的,所以他的作用域和其他操作符一样,是调用 observeOn 之后的链路。Schedulers.io() 代表 io 操作的线程, 通常用于网络,读写文件等 io 密集型的操作Schedulers.computation() 代表 CPU 计算密原创 2021-03-17 14:47:40 · 1600 阅读 · 0 评论 -
Glide 面试
1、看过Glide源码吗,你印象最深的是什么?Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存。这两个缓存模块的作用各不相同,使用内存缓存的原因是:防止应用重复将图片读入到内存,造成内存资源浪费。使用硬盘缓存的原因是:防止应用重复从网络或其它地方下载和读取数据。2、简单说一下Glide的三级缓存?简单描述:读取的顺序是:Lru算法缓存、弱引用缓存、磁盘缓存写入的顺序是:弱引用缓存、Lru算法原创 2021-03-15 18:07:40 · 1006 阅读 · 2 评论 -
OkHttp 面试题汇总
一、前言如今面试中高级开发工程师岗位,OKhttp 原理是必问环节,只会使用已经无法满足 Android 开发市场的需求,优秀的第三方框架源码剖析不仅能深度理解框架,也能对自己学习带来很大的帮助。本篇文章根据朋友反馈和亲身经历简单整理的一些关于 Okhttp 常见面试题目。1.Okhttp 基本实现原理OkHttp 主要是通过 5 个拦截器和 3 个双端队列(2 个异步队列,1 个同步队列)工作。内部实现通过一个责任链模式完成,将网络请求的各个阶段封装到各个链条中,实现了各层的解耦。OkHt转载 2021-03-12 10:21:27 · 8126 阅读 · 0 评论 -
一个汉字占多少字节?
一、前言:1、GBK编码,一个汉字占2个字节。2、UTF-16编码,通常汉字占2个字节,CJKV扩展B区、扩展C区、扩展D区中的汉字占4个字节(一般字符的Unicode范围是U+0000至U+FFFF,而这些扩展部分的范围大于U+20000,因而要用两个UTF-16)。3、UTF-8编码是变长编码,通常汉字占3个字节,扩展B区以后的汉字占4个字节。二、代码演示:String a = "名";Timber.d("UTF-8编码长度:"+a.getBytes("UTF-8").length);Ti原创 2021-02-23 13:14:54 · 21715 阅读 · 1 评论 -
AS 3.5 The given artifact contains a string literal with a package reference 'android.support.v4.con
一、前言:报错:AS 3.5 The given artifact contains a string literal with a package reference 'android.support.v4.con使用背景:我的 Android 项目采用的是 AndroidX;我首先使用的是butterknife 8.5.1版本,报错,提示我用butterknife 9.0 以上;...原创 2019-09-07 16:15:11 · 6251 阅读 · 0 评论 -
Android Service生命周期理解
一、前言:1. Service是什么?Service 作为android系统的四大组件之一,是一种可以在后台长时间运行操作而没有用户界面的应用组件。Service 作为 Android四大组件之一,应用非常广泛。和Activity一样,Service 也有一系列的生命周期回调函数,我们可以用来监测 Service状态变化,并且在适当的时候执行适当的工作。2. Service和Thread的...原创 2019-09-07 12:06:34 · 250 阅读 · 0 评论 -
Android studio 3.5 没有前进和倒退按钮
一、前言:当升级到AS 3.5 版本后,发现之前好用的前进和倒退按钮不见了。如下图所示:旧版本中的前进和倒退按钮,如下图所示:二、解决方案原因:新版本中隐藏了前进和倒退按钮细心的你,可以发现:除了前进和倒退按钮不见了,这一块的布局也都发生了变化:旧版在左边,新版在右边。除此之外,还有保存、打开文件、剪切、复制等按钮统统不见了。而这些按钮是归属于Tool Bar。之所以统统不见了,这...原创 2019-09-07 11:21:33 · 2402 阅读 · 0 评论 -
2019 最新面试题
一、 深拷贝和浅拷贝区别?1、基础类型:像Number、String、Boolean等这种为基本类型2、引用类型:Object和Array浅拷贝: 只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝。深拷贝:是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝。注意:浅拷贝只是对指针的拷贝,拷贝后两...原创 2019-09-03 00:20:34 · 188 阅读 · 0 评论 -
Java中IO 流总结
1. Java中有几种类型的流?字符流和字节流。字节流继承inputStream和OutputStream,字符流继承自InputSteamReader和OutputStreamWriter。字节流继承inputStream和OutputStream字符流继承自InputSteamReader和OutputStreamWriter2.字节流和字符流哪个好?怎么选择?缓...原创 2019-09-01 22:49:52 · 293 阅读 · 0 评论 -
Rxjava和Retrofit返回数据解析问题
一、前言:在我们数据请求过程中,采用的接口请求,Observable返回数据。我们定义的返回数据都是Json数据。通过Dagger2配置:@Modulepublic class RetrofitModule { private int CONNECT_TIMEOUT = 3; private int READ_TIMEOUT = 3; private int WRI...原创 2019-09-12 15:34:31 · 1027 阅读 · 0 评论 -
Volley 实现原理解析
链接: Volley原理解析转载 2019-09-01 22:27:27 · 95 阅读 · 0 评论 -
Android Studio | ERROR: Failed to parse XML……Message: expected start or end tag
一、前言:报错:Message: expected start or end tag我的是Android Studio 3.5 版本报这个错误:二、解决方式:1. 解决:将AndroidManifest.xml所有下面注释:/* */ 或 //修改成:<!-- -->即可。2. 示例:修改前://获取设备网络状态,禁用后无法获取网络状态<use...原创 2019-09-07 16:34:19 · 750 阅读 · 0 评论 -
Cannot lock Java compile cache as it has already been locked by this process.
一、前言:今天在项目中突然遇到这个Bug,很是奇怪啊。错误: Cannot lock Java compile cache (D:\develop\work\teagoandroid.gradle\5.4.1\javaCompile) as it has already been locked by this process.## 二、解决:1. 方式1:2. 方式二:以上操作还是没有...原创 2019-09-10 17:54:16 · 17129 阅读 · 1 评论 -
Access denied finding property "ro.sf.lcd_density" 问题解决
一、前言:我用的Android Studio是 3.5版本,今天做WebViewActivity页面跳转的时候,突然爆出以下错误,当时猜测是WebView的错误,后来打脸刷刷的。E/libc: Access denied finding property “ro.sf.lcd_density”E/InputTransport: ro.sf.lcd_density must be defin...原创 2019-09-11 15:30:02 · 23658 阅读 · 8 评论 -
android studio项目上传到github或码云
一、前言:首先我们的电脑先安装 git,并且配置用户名和密码。二、本地上传项目1. 选择vcs-enable2. 弹出框选择git3. 选中项目后进行如下操作三、本地下拉项目1. 选择如图所示2.选择地址,上面网上地址,下面本地地址四、项目无法上传码云?从以上操作,我们可以看出,我们的项目可以上传到 gitHub,却没有上传到码云的地方,因为 Android Stud...原创 2019-09-14 10:56:12 · 235 阅读 · 0 评论 -
BRVAH学习使用
一、前言:GitHub 地址:官方网站:BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,...转载 2020-06-15 11:05:16 · 3306 阅读 · 2 评论 -
JiaoZiVideoPlayer视频学习
一、前言:主要特点可以完全自定义UI和任何功能一行代码切换播放引擎,支持的视频格式和协议取决于播放引擎,android.media.MediaPlayer ijkplayer可实现全屏播放,小窗播放能在ListView、ViewPager和ListView、ViewPager和Fragment等多重嵌套模式下全屏工作可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏多种视频适...原创 2019-09-14 16:44:42 · 1838 阅读 · 0 评论 -
Android 知识汇总
Android 知识汇总转载 2019-09-15 15:08:27 · 86 阅读 · 0 评论 -
Android Kotlin 类和对象(五)
一、前言:当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀的积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。二、类:1. 类定义Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类...原创 2019-08-14 23:44:45 · 178 阅读 · 0 评论 -
RxJava2原理
RxJava2原理RxJava线程切换原理转载 2019-09-01 21:38:06 · 103 阅读 · 0 评论 -
EventBus 原理解析
EventBus 原理解析转载 2019-09-01 21:29:19 · 79 阅读 · 0 评论 -
Android Kotlin 泛型(九)
一、前言:读书的目的,不在于取得多大的成就,而在于,当你被生活打回原形,陷入泥潭时,给你一种内在的力量。二、基本用法:1.概念:泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。声明一个泛型类:class Box<T>(t: T) { var value = t...原创 2019-08-16 11:26:44 · 534 阅读 · 0 评论 -
Android 面试(一)
一、前言:我主要是根据以前的工作以及很多网友的面试经验,综合整理而来,若有不足,也请大家一起指出,从来没想过危险离自己如此之近,既然来了,我们要有战胜的勇气和决心。失败并不可怕,可怕的是你再也没有站起来的决心!二、BAT面试题:1. 谈谈对kotlin的理解特点:代码量少且代码末尾没有分号;空类型安全(编译期处理了各种null情况,避免执行时异常);函数式的,可使用lambda表达...原创 2019-08-21 15:00:12 · 151 阅读 · 0 评论 -
Android Kotlin 数据类与密封类(八)
一、前言:一生要强,喝最烈的酒,开最快的车,听最嗨的歌,住最好的医院,打最贵的石膏,玩最炫的轮椅,睡最好的棺材,挖最深的坑,埋最好的土,烧最厚的纸,长最高的坟头草。二、基本用法:1. 数据类Kotlin 可以创建一个只包含数据的类,关键字为 data:data class User(val name: String, val age: Int)编译器会自动的从主构造函数中根据所有声...原创 2019-08-16 11:05:37 · 245 阅读 · 0 评论 -
Android Kotlin 扩展(七)
一、前言:我相信:能考第一名的那个人,一定是每一科都不会差,哪怕是政治、地理这样的科目。而我们身边最优秀的人,也会把每一件事都尽力做好,不管是大事还是小事,是涉及自己或是别人。二、Kotlin 扩展用法:1. 概念:Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。2. 扩展函数:扩...原创 2019-08-16 10:57:10 · 72 阅读 · 0 评论 -
Android Kotlin 继承与接口(六)
一、前言:人生如一本厚重的书,有些书是没有主角的,因为我们忽视了自我;有些书是没有线索的,因为我们迷失了自我;有些书是没有内容的,因为我们埋没了自我。心静,则一切豁然开朗。二、Kotlin 继承:1. 概念 :Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:// 从 Any 隐式继承class ExampleAny 默认提供了三个...原创 2019-08-15 16:13:29 · 464 阅读 · 0 评论 -
Android Kotlin 条件控制和循环控制(四)
一、前言:今天真的很苦,尽管偶尔会放肆一下、低落一下、发脾气一下、惆怅一下、对未来迷茫一下。但整体上,我是在持续的进步:虽然进步的很慢,被一些年轻有为的人甩在身后,但也把那些不努力的人甩在了身后。愿你有坚持到底的决心,也有面对失败的勇气。二、Kotlin 条件控制1. IF 表达式一个 if 语句包含一个布尔表达式和一条或多条语句。var a = 5var b = 8// 传统用法...原创 2019-08-14 16:59:30 · 310 阅读 · 0 评论 -
Android Kotlin 基本数据类型(三)
一、前言:前进的道路从来不允许退出,我们没有退路,只能勇往直前,所有打不死我们的事情,终将使我们变得更加强大!二、Kotlin 基本数据类型1.数据类型Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。类型位宽度Double64Float3...原创 2019-08-14 15:54:00 · 138 阅读 · 0 评论 -
Android 设计模式的六大原则
本文转自:http://www.uml.org.cn/sjms/201211023.asp一、单一职责原则定义1:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。定义 2:其实就是开发人员经常说的“高内聚,低耦合”,也就是说,每个类只有一个职责,对外只能提供一个功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。问题由来:类T负责两个不同的...原创 2019-07-01 22:04:02 · 416 阅读 · 0 评论 -
Android Kotlin 基础语法(二)
一、前言:从这篇文章开始,正式进入 Kotlin 的学习,只要学过 java 的同学,能很好的理解 Kotlin 语法,虽不同,但有相似之处。不敢有丝毫的懈怠,但怀有无比的信心!二、基础语法:1. Kotlin 文件Kotlin 文件以 .kt 为后缀。Kotlin 中分号可以省略不写。2. 包声明代码文件的开头一般为包的声明:package com.runoob.main...原创 2019-08-14 14:29:31 · 103 阅读 · 0 评论 -
Kotlin Android 环境搭建(一)
一、前言:Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。二、环境配置:...原创 2019-08-14 10:39:17 · 161 阅读 · 0 评论 -
Android Kotlin 对象表达式和对象声明(十)
一、前言:“老实” 有什么错?很多所谓的“老实”,其背后最根源的原因还是胆小、没自信、逃避、自我压抑。这样的老实人多是无胆之人,所以也是无趣之人。老实人逃避独立思考,顺从、盲从、急于做出回应和附和。老实的人从不积极去思考对错、因果、人性、感受;解决方案;规律、规则;其它方法途径、更优方案。二、基本用法:1. 概念:Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改...原创 2019-08-16 11:45:10 · 196 阅读 · 0 评论 -
Android Kotlin 委托(十一)
一、前言:六句让我们瞬间顿悟的话永远不要用你的业余挑战别人的专业,因为你的顿悟,可能是别人的基本功;暗恋一个人的滋味,就像搜到了 WI-FI,却不知道密码;数学学的好不好,或许买菜用不到,但却可以决定你在哪里买菜;45 度做人,90 度做事,180 度为人,360 度处事;别人怎么对待我们,是因果;我们怎么对待别人,是修行;三十岁之前,行动要多一些,思考要少一些,不然就会纸上谈兵;...转载 2019-08-16 13:23:51 · 107 阅读 · 0 评论 -
ButterKnife原理
ButterKnife原理转载 2019-09-01 21:23:18 · 83 阅读 · 0 评论 -
List、Set和Map三者的区别
一、前言:1. List:有序、可重复。通过索引查找快,增删速度慢 (操作时后续的数据需要移动)。2. Set:无序、不可重复的集合。3. Map:键值对、键唯一、值不唯一。Map 集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对 map 集合遍历时先得到键的 set 集合,对 set 集合进行遍历,得到相应的值。二、具体对比:1. ListArrayList ...原创 2019-09-01 16:54:49 · 9381 阅读 · 0 评论 -
ORMLite和GreenDao数据库框架的对比
一、前言:Android 中常用的数据库框架,下面先列出几个ORM框架:ORMLite、greendao、ormndroid、androrm、ActiveAndroid二、对比:1. ormlite基于注解和反射的的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理)优点:文档较全面,社区活跃,有好的维护,使用简单,易上手。缺点:基于反射,效率较低2. Gr...原创 2019-08-31 20:12:32 · 374 阅读 · 0 评论