自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 android性能优化(四)之启动优化

一. 前言 当用户在手机桌面上点击一个从未打开过的App时(也就是冷启动),到进入第一个页面显示这段时间,默认情况下您的App会首先出现一个白色/黑色屏,过一段时间才是进入第一个Activity显示其具体布局内容。 对于一个专业的App来说,这种用户体验肯定是不能接受的,不仅会收到用户...

2019-08-31 21:53:51 271 0

原创 android性能优化(三)之Webview优化

阅读本文大概需要 4 分钟。 这篇把Webview的优化单独拎出来,是因为Webview与其他普通view来说有自身独特的特点。 在做一些native+H5应用开发时,Webview的性能问题一直是关注的重点。所谓Webview性能问题,就是从打开Webview页面开始到可以和用户...

2019-08-25 20:01:30 2846 1

原创 android性能优化(二)之卡顿优化

阅读本文大概需要 5 分钟。 相对于其他类型的性能指标,卡顿是能直接让用户产生视觉反馈的现象,比如App反应滞后于用户的操作,在严重的情况下会出现ANR。关乎用户体验的大事,是很容易遭到用户吐槽的。因此,开发人员平时写代码时必须要时刻提醒自己不要落入卡顿的陷阱之中。 一. 卡顿...

2019-08-25 20:00:44 857 0

原创 android性能优化(一)之UI渲染优化

阅读本文大概需要 2.6 分钟。 在众多高频面试题中,Android性能优化几乎可以说是必问的考题。 而此题一出,一场恶战已然拉开序幕,因为此话题牵扯面非常广,绝非三言两语就能够聊完。因此,非常有必要对性能优化做一下系统性的总结。 此篇作为性能优化系列开篇,是因为UI渲染...

2019-08-25 20:00:02 229 0

原创 一切从android的handler说起(七)之内存泄露

阅读本文大概需要 7 分钟。 作为一个客户端,UI无疑是非常重要的,因此主线程承载了非常多的任务,例如生命周期,View操作,包括Toast,View绘制,动画,等等,而这些的实现,都依赖于Android的消息机制模型。 可见Handler在Android的地位是非常核心的,在...

2019-08-19 23:16:29 122 0

原创 一切从android的handler说起(六)之四大组件生命周期起源

阅读本文大概需要 4 分钟。 上一篇,我们了解到Android里触摸事件是如何一步一步转入UI线程的message queue里被执行的,这种事件是由外部事件触发的。 我接着对小张说:其实Android里还有一种UI queue里的事件更为大家熟知,你天天写代码都在与之打交道,...

2019-08-17 18:42:34 241 0

原创 一切从android的handler说起(五)之触摸事件模型

阅读本文大概需要 5 分钟。 在弄清楚了handler消息机制原理后,小张显得异常高兴,感觉这块儿终于像一碗清水似的看到底了。 我无意间说了一句:别高兴得太早,你只清楚了一半! 小张听了有点发懵:一半?啥意思,不都非常清晰了吗? 我笑了笑,说道:现在你只知道UI线程是事...

2019-08-17 18:42:21 166 0

原创 一切从android的handler说起(四)之postDelay原理

“阅读本文大概需要4分钟。” 和小张聊完了handler底层原理后,我跟小张说:你现在知道Android的UI线程是通过事件来驱动的了吧,有消息来才干活,不然就睡大觉。 小张点了点头,道:通过刚才的了解,我对事件驱动模型的概念理解更为深刻了。 我接着说:恩,其实目前大部分的U...

2019-08-14 13:01:37 260 0

原创 一切从android的handler说起(三)之UI线程为何不卡顿

“阅读本文大概需要4分钟。” 和小张聊到兴起,我就问了android面试界一个众所周知的问题。 我:之前说到每个线程的looper都在不断的从message queue里取message来处理,那android系统是如何做到“不断”二字的? 小张快速回到答:这个我看过一些...

2019-08-14 12:57:09 439 2

原创 一切从android的handler说起(二)之threadLocal

“阅读本文大概需要2分钟。” 看小张有些受惊,我打算换个新的角度。 继续问道:刚才说到每个线程只能有一个唯一的looper,你知道android是怎么保证这一点的吗? 小张眼睛躲避着我的视线,模糊的回答道:我好像记得有个threadLocal和这个有关。 为了给小张一点...

2019-08-14 12:51:47 109 1

原创 一切从android的handler说起(一)之message

“阅读本文大概需要3.2分钟。” 01 工作十余年,作为android面试官面了都不下百场,handler一直都是我的经典面试题,因为这个问题不仅是android的核心之一,而且还能问得由浅入深,由窄到宽,非常能看出面试者的水平处于...

2019-08-14 12:45:42 91 0

原创 Android进程间通信总结

AIDL方式:1. 写AIDL文件,其中有方法func1(), func2(), ..., funcN()2. 编译后产生AIDL生成Interface IMyAidl.java implements IInterface, 内部有静态abstract Stub类extends Binder3. ...

2018-03-01 16:16:17 136 0

原创 Kotlin lamda语法备忘

1. 高阶函数高阶函数可以将一个函数作为参数或返回值:fun operate(x:Int=0,y:Int=0,body:(Int,Int)->Int){//body是一个函数类型,传入两个Int类型参数,返回一个Int类型参数 print("this result ...

2018-02-27 11:41:23 160 0

原创 RxJava使用总结

一. 执行顺序:1. 先执行doOnSubscribe(), 当有多个doOnSubscribe()方法时,则由下至上的顺序执行,其执行所在线程由其后面的subscribeOn()来指定;若没有subscribeOn()指定,则执行的线程和本身所在线程一致。2. 再执行observable.cre...

2018-02-26 16:59:37 200 0

转载 你真的懂Handler.postDelayed()的原理吗?

转载自http://www.dss886.com/2016/08/17/01/ 阅读之前先问大家一个问题:Handler.postDelayed()是先delay一定的时间,然后再放入messageQueue中,还是先直接放入MessageQueue中,然后在里面wait delay的时...

2017-05-27 19:23:35 36170 19

转载 java中的try-catch-finally执行顺序你真的弄清楚了吗?

转载自http://blog.csdn.net/lu_ca/article/details/52184423 前言: java 中的异常处理机制你真的理解了吗?掌握了吗? catch 体里遇到 return 是怎么处理? finally 体遇到 return 怎么办?finally ...

2017-05-27 14:27:28 882 0

原创 MPAndroidChart MarkerView的精确点击问题解决方案

说到在Android中画图,相信大家对MPAndroidChart不陌生,其功能强大,能画出各种各样非常绚丽的效果图。但是近期公司的项目要求在markerview上添加一些按钮,能够直接在markerview上操作按钮来直接对图上的point进行操控。然后在lib里找了半天,发现原生根本就不支持此...

2017-05-19 17:32:39 3509 3

原创 自定义View总结

一. 自定义ViewGroup 1. 自定义ViewGroup必须重写onMeasure(int widthMeasureSpec, int heightMeasureSpec): a). 这是因为ViewGroup是abstract的,每个viewGroup都有自己的布局方式,因此无法像vi...

2017-05-15 19:07:24 313 0

原创 两行代码搞定发送 Retrofit GET/POST 请求

目前Android开发几乎都离不开网络请求,而很多Android App网络框架都使用Retrofit来发送网络请求和响应交互,其优点是一底层依赖了强大灵活的Okhttp,二是其符合标准的RESTFUL和后端交互更爽。本身Retrofit已经封装得很好了,其使用也很简单://定以接口 public...

2017-05-06 15:43:19 2196 0

原创 假如让我重新做一个Android App

我会如此搭建和注意下面的点: 1. 横向分业务,多组件开发,一个独立的业务一个library,然后有一个主Module Application, 之间通过一个Router Library通信,进行解耦。 2. 每个业务模块纵向采用MVP方式,进行职责划分, V只负责显示数据,P负责逻辑,M负责...

2017-02-17 15:17:00 437 0

原创 Android专家级别的面试总结

1.. 自定义View流程 onMeasure, onLayout, onDraw, 采用深度优先,因为必须子view获得测量结果,父view才能确定大小; 2.. 事件分发机制 https://www.cnblogs.com/aademeng/articles/6551337.html ...

2017-02-15 16:56:28 2997 1

原创 在Android App里实现语言切换

在res底下建立 values-zh-rCN / string.xml 和 values-en-rUS / string.xml 在 activity 里使用 context.getResources().getString(R.string.xxx) 创建BaseActivity如下,所有的ac...

2016-09-23 18:44:50 433 0

原创 人生感悟

最信赖,可依靠的人永远只有自己。因为在最危急的时候谁也帮不了你。甚至别人比你更需要帮助。 必须有一技之长,立足社会。 适合自己的才是最好的,而不是事物本身有多好。永远不要忽略自身的实际情况。 要有老板的心态,每一步都是为了自己的梦想而努力。 一定要有目标,财富自由的目标。努力工作的同时,不断的增加...

2016-09-11 18:10:36 360 0

原创 Android 蓝牙4.0 BLE 开发之请求同步实现篇 完全解析

开发过Android 蓝牙4.0 BLE的同学都知道,Android的蓝牙开发有非常多的坑,具体坑的集合可见我的前面一篇博客,《Android蓝牙4.0 BLE开发坑总结》,其中不同机型之间的兼容性就是一个很令人头疼的问题,很多问题究其原因是在手机端和智能设备之间发送请求指令和回调时,其方式是异步...

2016-09-10 15:56:25 6026 1

原创 Android 开发过程中碰到的小坑集合

registerReceiver 和 unregisterReceiver 要同一个 mReceiver对象才行,否则会出现”Caused by: java.lang.IllegalArgumentException: Receiver not registered”错误。但是!即便是同一个 mR...

2016-09-09 10:41:46 695 0

原创 Android蓝牙4.0 BLE开发坑总结

onServicesDiscovered 回调里不能直接执行 write /readDataFromCharacteristic() 或者 enableNotificationOfCharacteristic之类的,而要放到主线程里执行,如 handler.post( … ); 如果发现连接上了,...

2016-09-07 14:54:43 15056 8

原创 Android开发中遇到的大坑

从去年到现在开发公司2代app已经有大半年的时间,这个过程中主导了从产品需求,设计,架构框架搭建,开发,测试,fix bug,上线这一系列的流程,这过程中遇到了无数的坑,但是秉着自己挖的坑,哭着也要把它填满的原则,一路走来总算是沿着自己越来月满意的目标在接近,对很多方面有了更深刻的理解。这里总结一...

2016-09-01 23:22:43 1603 0

原创 java基础类型的使用选择

记住java一定要用double,就算数值不大也要用double。了解java虚拟机的底层会知道,float放在内存中其实是当作double来处理的,它不会比double更节约内存资源,对应的double虚拟机会直接以double形式来进行处理,快速而且精度高,但是如果用float,不但不会节约内...

2016-05-18 20:21:33 514 0

转载 java方法区究竟存储了什么?

首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者。另外,这里ps一下,Class对象是存放在堆区的,不是方法区!这点很多人容易犯错。类的元数据(元数据并不是类的Class对象!Class...

2016-05-14 13:40:46 27706 15

原创 JVM内存分配以及存储总结

最近看了一下JVM的内存分配,还是比较复杂的。这里做个总结,首先一个common sense就是操作系统会为每个java进程实例化一个jvm实例。jvm然后再来运行java程序,具体的过程就不多说了,简单来说就是核心classloader如bootstrap, extention, System对...

2016-04-17 13:12:49 3078 3

原创 Android内存优化之防止OOM篇

1. 不要用static变量持有Activity的引用。 2. 单例不要持有Activity的引用,本质原因和1类似,都是它们的生命周期和application相同,导致activity资源无法释放。 3. 防止大图的使用,利用inSampleSize之后再用。 4. 不要改变图片背景后,忘...

2016-03-20 20:27:44 381 0

原创 Android性能优化

1. 在LinearLayout和RelativeLayout均能使用的情况下,并且嵌套层级相同(比如都是垂直往下的布局),优先选择LinearLayout,因为其计算速度更快。 2. 当用LinearLayout时需要的的嵌套层级比RelativeLayout更多时,优先选择RelativeLa...

2016-03-20 20:22:36 336 0

原创 startService, bindService区别和总结

service有2种启动方式,startService和bindService。知识点包括以下几个方面:一. 生命周期 (一) startService生命周期 1. onCreate() –> onStartCommand –> onDestroy()。 2. startSer...

2016-03-09 14:04:37 1631 0

原创 View滑动动画的选择及其left, marginLeft, translationX参数的总结

最近由于项目需要,做一个比较复杂的3D动画,核心就是根据手指的滑动来翻转3D效果。因此,又回顾了一下view滑动效果,而且根据不同的方式实现了一下,发现其中很多参数容易搞混,比如改变view的left,marginLeft,translationX中的任意一个值,对另外2个值及其getX是否有影响...

2016-03-02 18:10:41 1065 0

原创 如何debug一个问题的方法经验之谈

最近开发一个对于公司来说具有重要战略意义的app项目,我底下带了Android, iOS, 前端开发,后台开发的技术团队。项目进度很紧,人手不够,不断的小脚步迭代,快速前进。众所周知,对于软件行业,只要是开发工作,永远都避免不了有bug的存在,有bug并不可怕,就怕你在代码的海洋中毫无方向的摸索,...

2016-02-29 17:13:18 3171 0

原创 深入了解ListView工作原理(二) -- 之convertView的ViewType篇

现在继续探讨《深入了解ListView工作原理(一) – 之viewHolder优化篇》 中的第二个问题,这个问题我也有过类似困扰,当我有多种布局给给不同的item的时候,adapter里传给getView里的convertview是此position的item想要的那种viewType吗?因为这...

2016-02-26 18:40:57 794 0

原创 深入了解ListView工作原理(一) -- 之viewHolder优化篇

看到题目,大家可能不禁要问,在网上一搜满大街的是讲ListView工作原理的,还再写一篇这个干吗?不急,没有一点新意,我是绝对不会写重复的东西,若非精品,分享也没有意义。所以,在这里保证,只要耐心看完,一定有干货,并且让你更加清晰的认识到listview内部是怎样工作的。大家可以先看看网上http...

2016-02-26 17:44:57 5246 1

原创 eCharts画图断点连线的解决方案

由于公司产品的需要,最近几个月都在使用eCharts,功能还是很强大的,基本能够实现你想要的任何效果。但是在使用的过程中,碰到一个eCharts本身不支持的功能,就是eCharts只画有真实数据的点,没有真实数据的用”-“表示的点是不画的,所以就会出现一种情况:如果2个非连续的点之间存在空值,那么...

2016-01-10 17:32:21 8046 3

提示
确定要删除当前文章?
取消 删除