自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZhangGeng's Blog

每天 坚持进步 一点点 !

原创 我的铜钱草

那是在2016年的一个夜晚:外面下着淅淅沥沥的雨,一个卖花的老头躲在一个被撑开的伞下,踱着脚步,等待着顾客。从他跟前走过已经走出很远的我,转身走了回去只是为了在他跟前买盆花儿。在那个拥挤的三轮车上满满当当的挤满了各种各样的花儿,从第一排扫到最后一排能看中的:一个透明的玻璃瓶,全是绿色的圆形叶子。看上去生机勃勃的样子,就要他了。问老头多钱,老...

2018-06-25 10:04:00 151

原创 该以怎样的态度面对要面对的?

前段时间在读一本书《活出生命的意义》这是今年以来读的对我触动还挺大的一本书,其中有句话现在已经成为我做事儿的指导准则:人所拥有的任何东西,都可以被剥夺,唯独人性最后的自由,——也就是在任何境遇中选择一己态度和生活方式的自由——不能被剥夺。诚然,我可以选择抱怨也可以选择积极乐观的心态来面对这一切。假以抱怨,我能得到的只是更加糟乱的心情、烦躁、焦虑;假...

2018-05-15 08:42:00 59

原创 Android相机拍照方向旋转的解决方案:ExifInterface

一、 碰到的问题写这篇文章的动机源自于这波迭代中碰到的一个问题:在IM拍照时,在三星s7 eadge上拍完照片后从sd上拿到的地址设置给Imageview后显示时,图片旋转了90度。But我拍照的时候明明是竖着拍的,相册预览也是竖着的,为什么拿到图片后就成了横着的?对比了另一台手机锤子坚果U1,没这个问题,因此怀疑是跟相机的机型相关。想到的解决...

2018-05-09 10:10:00 2485

原创 LaunchMode

本文主要复习如下内容:实际开发中启动模式使用不当造成的问题Android中的启动模式分类以及他们各自的特点启动模式的应用场景1. 实际开发中启动模式使用不当造成的问题情景一:打开微信,定位到tab为我的栏目,在:钱包、收藏、相册、卡包、表情、设置这些栏目中快速连续点击几次,发现会启动两个或者3个界面,这就是启动模式使用的一个问题:启动模式使用不当造成页面打开好几个,如果是一个支付页面,当用户

2017-08-04 11:02:54 314

原创 Window和WindowManager的工作原理

本文主要讲解Window和WindowManger的工作原理,其中包含如下内容:Window和WindowManger简介通过WindowManager添加一个简单的Window以及Window的Flags属性Window的内部机制 3.1 Window的添加过程3.2 Window的删除过程3.3 Window的更新过程1. Window和WindowManager简介Window和

2017-08-02 15:37:02 712

原创 借助AIDL进行IPC

使用AIDL进行跨进程间通信本文主要包含如下内容:AIDL的介绍AIDL的适用场景如何定义AIDL如何调用AIDL传递复杂对象调用IPC方法AIDL的介绍AIDL(Android接口定义语言),可以利用它定义客户端与服务使用进程间通信IPC进行相互通信时都认可的编程接口。AIDL的适用场景只有允许不同应用的客户端用IPC方式访问服务,并且想要在服务中处理多线程时,才有必要适用AIDL

2017-08-01 15:04:21 345 1

原创 View工作原理

在自定义View的时候,掌握View的底层工作原理,也就是:View的measure、Layout、draw流程,可以帮助我做出比较有意思的自定义View。因此,本文主要讲解: View的工作原理,其中包括:测量流程、布局流程、绘制流程。其中包括如下内容:基础知识准备: 认识ViewRoot和DecorView理解MeasureSpecMeasureSpec和LayoutParams的

2017-08-01 15:02:42 328

原创 Android动画

本文主要讲解Android动画的相关内容,其中包括如下部分: 1. Android动画的分类 2. View动画 3. 自定义View动画 4. 帧动画 5. View动画的使用场景 6. 属性动画的使用及其原理 7. 动画使用中的注意事项1. Android动画的分类Android的动画分为三类:View动画、帧动画、属性动画。View动画:通过对场景里的对象不断做图像变换(平移、缩

2017-08-01 14:59:58 492

原创 View事件分发机制

本文主要讲解我对Android中事件分发机制的理解,其中包括如下内容:View事件分发,这个事件指的是什么?实例:点击屏幕上的一个按钮后,事件分发过程Android中跟事件分发有关的方法Android中有事件传递能力的类事件分发源码解析 5.1 Activity对事件的分发过程5.2 ViewGroup对事件的分发过程5.2.1 当ViewGroup拦截事件的时候5.2.2 当Vi

2017-07-26 16:01:04 276

原创 我每天所付出的努力:是在奋斗,还是在挣扎?

我每天所付出的努力:是在 奋斗,还是在 挣扎?这是一段时间以来工作、学习、生活的反思:是在 奋斗,还是在挣扎?要搞清这个问题,我需要从如下几个方面入手:什么是挣扎? 什么是奋斗?他们的表现有什么区别,差异?如何成为一个奋斗者?一、什么是挣扎?什么是奋斗?所谓的挣扎,就是一个人在不清楚自己所处环境的情况下,不断将自己拥有的资源和能量...

2017-07-25 10:42:00 96

原创 “不忘初心”?别做梦了!

今天很多人喜欢讲不忘初心,为什么不忘初心那么难呢?因为当初你有初心的时候,选择的机会可能没有那么多,所以比较容易坚持。随着你的境遇发生变化,机会增加,你要坚持原来的看法越来越难了,成本就越来越高了,放弃的东西就越来越多了。所以,不忘初心不是一件容易的事儿。坚持初心的成本是放弃了的最大代价。现在,你还会说“不忘初心”吗? ...

2017-07-25 09:56:00 234

原创 Android消息机制源码分析

打算换工作了,好多东西都忘掉了,因此这一系列的文章主要是为了面试,把一些基础的知识点捋一遍,眼看千遍不如手过一遍,我要把他们都写出来。打算用一个月的时间来准备面试!今日主题: Android消息机制源码分析先说下Android 消息机制涉及到的类:Handler、Looper、MessageQueue、Message、ThreadLocal。我之前在想这个问题的时候想过的几个问题,这几个问题搞

2017-07-04 16:37:59 512

原创 进程和线程

打算换工作了,好多东西都忘掉了,因此这一系列的文章主要是为了面试,把一些基础的知识点捋一遍,眼看千遍不如手过一遍,我要把他们都写出来。打算用一个月的时间来准备面试!今日主题: 进程和线程先回顾下在项目开发中用到的跟进程和线程有关的东西:为App开启多进程进行跨进程通信IPC进程优先级有哪些?使用前台服务可以提高进程优先级不要在主线程中进行耗时操作不要在非主线程中更新UI线程和线程

2017-07-03 15:27:00 384

原创 Virtualenv使用

本文主要讲解Python中Virtualenv的使用,其中包括如下几个环节:Virtualenv是什么?Virtualenv的出现是为了解决什么问题?如何安装Virtualenv?如何使用Virtualenv?virtualenv是创建“独立”的Python运行环境的原理是什么呢?如何管理电脑上的virtualenv创建的多个虚拟环境?下面来看看具体的内容。1. Virtualenv是

2017-06-08 08:26:43 24982 2

原创 Requests库使用详解

本文主要讲解Python网络请求库Requests的使用!Requests库是Python中的一个HTTP网络请求库,用来简化网络请求!她有如下特征,能够完全满足现在的Web开发:Keep-Alive & Connection PoolingInternational Domains and URLsSessions with Cookie PersistenceBrowser-style

2017-06-07 15:59:22 3122

原创 Android多线程相关知识总结——源码分析

这篇文章主要讨论Android中多线程相关的内容,其中包括如下内容 Java 多线程的基础知识 预备基础知识,包括但不限于:Callable、Future、RunnableFuture 、FutureTask、Executor、ThreadPoolExecutor、Android中的消息机制 AsyncTask的实现原理,主要是源码分析 AsyncTask存在的问题以及使

2017-03-21 20:18:03 1275

原创 App启动优化的另一种解决方案

我们知道App启动耗时的地方主要是在:Application初始化 和 MainActivity的界面加载绘制时间。当MainActivity的业务和布局复杂度非常高,那么该界面必须要有一些初始化的数据才能显示。那么这个时候MainActivity就可能半天都出不来,这就给用户感觉app太卡了。我们要做的就是给用户以干净利落的体验,所触既有所得——只要用户点击app就立马弹出我们的界面。我们常规的应

2017-03-19 09:00:01 817

原创 APK构建原理解析

App的开发完成后,需要打包并上线!我打包的过程一般都是用Android Studio提供的图形化工具进行打包。那么这个打包的原理是什么呢?先看一下一个Android工程里面都涉及到哪些资源文件: 资源文件,指res下的图片、xml文件 代码文件:.aidl 、java文件 、c文件、c++文件 引用的库:so文件,jar文件 第三方module 这么多的文件,是如何打包

2017-03-17 10:40:17 2672

原创 新生

昨天(2017年3月13日)我订阅了《通往财富自由之路》专栏,第一篇更新于2016年7月27日,知道的有点晚了,但无妨!一口气读了好几篇,感觉正确的姿势不该是这样的,我在想着该如何阅读这一系列的文章?从头开始?挑自己感兴趣的?跟着现在的步伐走?思索好久,我决定从头开始读起,感觉可能这系列的文章中所阐述的观点有些许的联系,跳着读总感觉会落下什么...

2017-03-14 23:30:00 30

原创 Android 6.0+ 运行时权限——EasyPermissions源码解析

1. 功能介绍EasyPermissions是简化 Android M (API >= 23)权限申请的一个库。2. 流程图以在App中调用打电话权限为例,流程图如下: 3. 具体实现涉及到的核心类: EasyPermissions: 为Android M (API >= 23)的App请求和检查系统权限按照上面的流程图来走:检查权限,涉及到的方法hasPermissions: /

2017-03-14 20:14:31 1602

原创 线性表

数据结构的选取在编程中至关重要。选取合适的数据结构可以节省程序的内存开销,让程序不是那么的卡。因此,从本文开始,将复习大学时学习的数据结构。数据元素之间存在的关联关系被称为数据的逻辑结构。归纳起来无非这几种集合结构线性结构树形结构图形结构这篇文章主要讨论的是线性结构,其中主要包括:数据的存储结构,包括:顺序存储结构 和 链式存储结构顺序存储结构以及链式存储结构相关的操作,包括:查找、增

2017-03-14 07:37:31 808

原创 Android 6.0+ 运行时权限——基本使用

简介Android 6.0引入了新的权限模式——用户直接在运行时管理应用权限。此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。 要确定您的应用是否已被授予权限,请调用新增的 checkSelfPermission() 方法。 要请求权限,请调

2017-03-12 17:15:28 903

原创 数据结构知识补全计划

这是我的数据结构知识补全计划!Why?深刻体会到了想再深入的发展必须要在数据结构、算法的层面进行补全自己的漏洞。因为,在写代码的时候选择数据结构不当将会对程序的性能产生严重的影响。其次,最近的找工作面试,面试的时候必问的点就是数据结构、算法;看了下那些不错的岗位,无一不要求数据结构、算法熟练掌握,这是最直接的原因。How to do it ?是什么? 要知道,我在研究对象是什么?这是什么

2017-03-10 18:03:12 724

原创 Trace解析

今天在读关于图片解析的源码,看到这样的代码:/** * Decode an input stream into a bitmap. If the input stream is null, or * cannot be used to decode a bitmap, the function returns null. *...

2017-03-09 22:30:00 130

原创 Trace解析

今天在读关于图片解析的源码,看到这样的代码:/** * Decode an input stream into a bitmap. If the input stream is null, or * cannot be used to decode a bitmap, the function returns null. * The stream's position

2017-03-09 22:28:21 6210

原创 一道关于Handler的面试题

题目如下:一个很简单的需求:点击页面上的按钮后更新TextView的内容给出如下代码,请找出如下代码中可以优化的地方:public class HandlerActivity extends AppCompatActivity { private TextView mTextMessage; private Button button; private UpdateHandler

2017-03-08 23:15:58 1229 1

原创 一道关于Handler的面试题

题目如下:一个很简单的需求:点击页面上的按钮后更新TextView的内容给出如下代码,请找出如下代码有那些不对的地方:public class HandlerActivity extends AppCompatActivity { private TextView mTextMessage; private Button butto...

2017-03-08 20:11:00 65

原创 新买的山地车被偷了

昨天下班到了地铁站发现我新买的山地车不见了!因为摩拜单车和ofo的骑行体验不好,我自己买了个山地车,花了1000多!喜欢晚上骑着车在空荡荡的路上玩儿漂移的感觉,刚买下车的时候总是担心车被偷,于是我就每天晚上回来总要把车抱进我的卧室,第二天睁眼的时候看到她还在,我就特开心!感受下我的爱车的英姿:然而,残忍的事情还是发生了,她被别人偷走了!我只求拿走我爱车的那个人,能够好好爱护她,好好对她!

2017-03-03 20:29:15 2140

原创 2017年关于健身要做的事儿

2016年最大的一笔投资——健身:时间、金钱!不过很值,这使我有了一种全新的生活方式!2017年开始要有一个完善的健身计划!2016年健身笔记总结上课时总结的笔记身体各大肌肉群学习总结健康饮食的规划2017年健身计划的制定胸、肩、背、腰、腹、胳膊、腿总体规划3周为一个大周期,一个大周期内把所有的身体部位,整体肌肉群训练一次;1周为一个小周期,每个小周期内训练两个部位,每次练习额外顺带腹部

2017-01-01 09:37:54 799 1

原创 2016年的读书列表

来北京上班后,基本都是换一份工作搬一次家!我尽量都会搬的离公司近一点,路程不会超过1个小时的!最近回了公司总部通勤方式的改变,发现漫长的通勤路程可以利用起来,我的Kindle发挥了最大的作用!年龄越来越大,觉越来越少,所以每天起的早。头天晚上把米放进锅里,定好时间。第二天早晨起来,喝完粥,吃俩煮好的鸡蛋!便开始了一天的生活,在项目组上班的时候,基本上班之前可以有1个小时的时间过来读书。晚上下班,健身

2016-12-31 22:45:40 636 1

原创 2016年的读书列表

来北京上班后,基本都是换一份工作搬一次家!我尽量都会搬的离公司近一点,路程不会超过1个小时的!最近回了公司总部通勤方式的改变,发现漫长的通勤路程可以利用起来,我的Kindle发挥了最大的作用!年龄越来越大,觉越来越少,所以每天起的早。头天晚上把米放进锅里,定好时间。第二天早晨起来,喝完粥,吃俩煮好的鸡蛋!便开始了一天的生活,在项目组上班的时候,基本上班...

2016-12-31 22:45:00 37

原创 Google Developer Day 2016见闻

作为一个菜鸟今天凑热闹参加了GDD,还是挺有意思的,知道了一些新的东西,体验了Google好玩儿的产品。今天我主要参加的是Android的分会场,当我在会场亲身体验的时候其实感觉也没什么,会场间歇玩儿手机的时候,发现——额,GDD竟然是个这么大的新闻!以下是我残存的记忆能想到的内容整理出来的,但是不全!有好多代码没记下来,等到官方keynote和视频出来后,我再仔细学习下:Session1: And

2016-12-09 00:26:55 1044

原创 Google Developer Day 2016见闻

作为一个菜鸟今天凑热闹参加了GDD,还是挺有意思的,知道了一些新的东西,体验了Google好玩儿的产品。今天我主要参加的是Android的分会场,当我在会场亲身体验的时候其实感觉也没什么,会场间歇玩儿手机的时候,发现——额,GDD竟然是个这么大的新闻!以下是我残存的记忆能想到的内容整理出来的,但是不全!有好多代码没记下来,等到官方keynote和视频出...

2016-12-09 00:17:00 50

原创 code review的思考

今天是教师节!祝所有恩师,节日快乐!上学时,总是说,这个老师不好,那个老师不好,现在再仔细回想一下,所有的老师在我成长的道路上给予我助力,想想很感激!下午拜读了两篇文章很受启发:陈老师|我的“code review”成长之路也谈代码审查之道(路)有一点感触,因此想写下来,其实主要是我对自己的反思:从没有看多队友的代码来这个项目组已经一年多了,我从来都是只关注自己的那部分任务,自己的代码写完就了

2016-09-14 08:50:36 479

翻译 测试你的Content Provider

本文翻译自:Testing Your Content Provider 水平有限自己感觉很多地方表达的并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进!测试你的Content Provider如果你实现了一个Content Provider来存取数据或者为其它App提供数据,你应该测试你的Provider来确保它按照预期的方式来表现。这节课描述如何测试公开的Conte

2016-05-19 10:13:03 1506

翻译 测试你的Service

测试你的Service如果你实现了一个本地Service作为你的App组件,你应该测试Service来确保它不会表现出未预期的方式。你可以创建instrumented单元测试来验证Service的表现是正确。比如,这个Service存储和返回正确的数据值并且可以争取的执行数据操作。Android Testing Support Library 提供了测试你的Service对象的Api,以隔离的方式。

2016-05-18 10:18:04 1951

翻译 测试App组件的集成

测试App组件的集成如果你的App使用了用户不直接和他们进行交互的组件,比如Service或者 Content Provider , 你应该验证并确保这些组件在你的App中以正确的方式和用户进行交互。当你开发这些组件的时候,你应该养成编写集成测试的习惯,来验证这些组件在你的设备或者模拟器上的表现。 注意:Android没有为BroadcastReceiver 提供独立的测试用例类。为了验证Bro

2016-05-17 09:37:50 1030

翻译 跨多个App的UI测试

本文翻译自:Testing UI for Multiple Apps 水平有限自己感觉很多地方表达的并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进!跨越多个App进行UI测试通过跨越多个APP之间的交互来测试你的APPUI,让你确认你的APP表现是否正确,比如:用户在你的APP和其他APP之间或者进入系统UI之间进行切换操作时。一个例子比如用户切换至短信APP它允许

2016-05-13 16:27:56 6383

翻译 单个App的UI测试

本文翻译自:Testing UI for a Single App 水平有限自己感觉很多地方表达的并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进!单个App的UI测试测试单独的App的用户交互可以帮助你确保用户在和你的App交互是,不会遭遇一些非预期的结果或者遇到非常糟糕的用户体。如果你需要确保你的App的UI功能的正确性,你就应该养成创建用户交互界面测试的习惯。A

2016-05-12 15:51:49 2715

翻译 自动化UI测试

本文翻译自:Automating User Interface Tests 水平有限自己感觉很多地方表达的并不到位,但找不到更好的表达方式,如果您觉着有更好的表达方式,帮助我改进!自动化UI测试UI测试可以让你确保你的App满足最基本的功能需求同时有一个高质量的标砖,这样就更容易被用户接受。一种UI测试的方法是人工测试:一个测试人员对目标App进行一系列的操作来确保各个功能的正确性。然而,这

2016-05-11 10:21:41 3368

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