自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hehui1860的专栏

从Android出发,终点是软件架构

  • 博客(40)
  • 收藏
  • 关注

原创 应用内存泄露问题分析实例

内存泄露,这个应用开发中比较容易出现的问题,由于短时间内难以测出来一般都比较难以发现,只能靠开发者的警觉性来避免,长时间的Monkey测试就成为一个可行的手段。Monkey测试能给出一个直观的内存变化曲线和日志,GC日志在内存紧张时都会打印出测试进程的内存信息,需要结合几个方面的数据才能定位到问题的准确位置。

2016-09-05 16:28:46 33768

原创 应用句柄泄露分析实例

Monkey测试由于操作量大,并且速度比较快,总是会出来一些隐藏的比较深的问题,比如内存泄露啊,句柄泄露啊等等。但是往往这类问题通过Monkey日志又很难直接定位到。需要有一些经验才能快速定位并解决。本文就是本人遇到的一例报AndroidRuntime: java.lang.RuntimeException: Could not read input channel file descriptors from parcel.异常最终解决的句柄泄露问题。

2016-09-02 17:33:50 11213 2

原创 Android 6.0 运行时权限检查分析

Android版本升级到6.0之后,为了一改往日安全受人诟病的形象,将权限授权的安装时授予的基础上,对于一部分危险的权限采用动态控制授权的方式。类似国内手机安全助手权限控制的功能。 本篇会从源码的角度给大家进行说明,不会说得太深入,各位看官跟着就行了。

2016-08-27 16:06:51 13527

原创 网络编程之——他山之石OkHttp

早在Android4.4的源码中,谷歌就已经把OkHttp框架引入了进来,6.0就要将apache的Http包替代掉,这足以说明这个框架是非常优秀的。本文将对其源码进行简要的剖析。

2016-01-25 19:54:47 1058

原创 Android应用优化(7)数据库操作

在Android设备上,大部分场景都需要进行数据的持久化操作,本地存储一般来说采用sharepreference或者是db(当然自己管理file也是可以的),但是对于稍微复杂一些的数据还是采用数据库的方式保存比较合适。既然大部分情况下应用都会使用到数据库,那么数据库的优化对于应用性能优化来说就是一个重要的方向了。本篇就把个人实际应用中的一些经验总结一下。

2015-10-13 14:29:17 757

原创 Android应用优化(6)工具篇

当大家开发APP到一定的阶段,实现功能已经不是目的了,如何能设计开发出性能更优异的应用才是大家的更深层次的追求,比如更省内容,更流畅。要做到这些除了在编码时就注意方案选择和编码细节以外,还可以借助一下抢到的工具来帮助我们进行优化。今天要说的就是Android自带的几个工具:TraceView、systrace和Allocation Tracker。

2015-04-05 11:42:07 3277

原创 Android信息推送技术简要分析

前言,进入移动互联网时代,信息推送成为了一个大家耳熟能详的东西,那么究竟这个推送在Android上是如何实现的呢,今天我们就来给大家介绍一下。本文主要介绍的是XMPP协议和MQTT协议两种主要方式的简单实现,并配合现在的一些开源实例给大家更好的展示效果和代码的编写;并提出了两个在Android移动平台上必须要着重设计和考虑的问题。

2015-03-23 11:12:27 1975

转载 android 多线程数据库读写分析与优化

时间 2013-08-04 10:43:21 CSDN博客原文 http://blog.csdn.net/lize1988/article/details/9700723 最新需要给软件做数据库读写方面的优化,之前无论读写,都是用一个 SQLiteOpenHelper.getWriteableDataBase() 来操作数据库,现在需要多线程并发读写,项目用的是2.2的SD

2015-03-05 09:23:35 6344

转载 Java中只有按值传递,没有按引用传递!

今天,我在一本面试书上看到了关于java的一个参数传递的问题:写道java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉!结果发现,我错了!答案是:值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人

2015-01-12 20:10:03 1466 2

原创 继承于Layout的自定义View减少布局层次

不管是为了封装也好,实现特殊的效果也好,大家或多或少都会进行自定义View的实践,这中间又主要有两种:一种是继承于View或ViewGroup,还有一个是继承于各种已存在的Layout使用XML来写。今天要来讨论的是第二种,实践就不详细说了,这里主要是针对这种方式带来的布局层次过深的问题提出两个方案。

2015-01-07 18:57:49 3632

原创 Android的服务(Service)(三)Service客户端的绑定与跨进程

继续上篇的分析,接下来是第三个问题”Service与其客户端的绑定如何实现,即跨进程调用问题“在这里会看到很多的跨进程操作。流程之前已经分析过了,这里只是突出binder对象的来源过程。到这里Android中的服务已经简要的分析了一下,不可能面面俱到也不会全都正确,还请大家多多指教。

2014-12-17 18:41:32 2130

原创 Android的服务(Service)(二)Service的自动重启问题

Service的自动重启问题在应用的开发中是让人又喜又怒的一个特性,今天浅析一下源码方便大家了解特性的来源。欢迎大家积极交流以便更好的深入理解。

2014-12-12 11:36:59 9278

原创 Android的服务(Service)(一)生命周期

本篇开始我们来浅析一下Android的另外一个非常重要的组件:Service,看到这个词我们的脑海里都会涌现出什么词语呢?诸如:无用户交互界面,耗时后台操作,服务(级别)进程,远程调用。感觉知道这些还不够,我们得根据这些来了解点系统层面的东西,那么我们应该试着进去看看!

2014-12-04 09:29:28 3263 2

原创 适配器模式

适配器模式总的来讲分为对象适配器和类适配器,怎奈类适配器一直没碰到使用的场景(在java语言没有哦),也无法理解到位。本文从个人实践出发简单论述一下对象适配器。不当之处欢迎序猿们指教。

2014-11-27 19:28:45 926

原创 Android的包管理机制浅析(三)

前面的内容是针对流程分析的,大家看完可能对整个包管理机制还不是很

2014-10-24 12:41:01 1153

原创 Android的包管理机制浅析(二)

本篇是前文APK安装过程的后续过程。这里主要说到了APK拷贝之后的一系列过程,重点讲解了签名检验,权限授予以及权限组管理。

2014-10-16 20:17:38 3556

原创 Android的包管理机制浅析(一)

在前面分析Service和Broadcast的时候经常提到PackageManagerService,今天就系统的对他进行分析一下。

2014-09-26 16:01:28 5816

原创 Framework中网络定位服务简介

前人已经将LocationManangerService的框架介绍的很不错了,可以参见下面的帖子http://www.ibm.com/developerworks/cn/opensource/os-cn-android-location/index.html#major2 其中介绍了整个GPS定位的代码框架。下面针对其中的网络定位做一些补充: LocationManangerService在s

2014-08-14 17:02:34 1623

原创 多例模式(升级单例模式)

纠结了很久,要不要写设计模式的博客,顾及的有两点:一来自己深度不够怕班门弄斧,二来怕说错了误导读者。不过有一个大牛说过,学习过的东西自己思考后写出来是一个更好的学习提高过程,不要因为自己浅薄而放弃这个学习的机会。所以我来了,带来了我的一些不成熟的想法。这个系列我不会说得太虚太高端,主要是在工作中遇到的一些场景和我用来处理这些问题的方法。需求描述:将原有的存储显示拆分为内置和外置存储信息的分

2014-08-06 18:23:16 885

原创 Android应用优化(5)几种内存泄露和解决办法

再说内存问题,Android系统底层的

2014-08-04 20:07:25 820

原创 Android系统gesture的识别过程浅析

Gesture是android中提供一种对手势轨迹

2014-07-29 20:24:00 920

原创 Android的账号与同步机制

本文主要是介绍了Android系统的账户和同步机制,结合框架和流程图介绍了一些主要的流程。

2014-07-22 19:49:36 3622

转载 View转图片,View可以是显示在屏幕的也可在后台

这是从http://www.eoeandroid.com/blog-767797-39566.html?_dsign=7a0934cd转载来的,直接上代码了。public static Bitmap convertViewToBitmap(View view){   view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSP

2014-07-08 11:48:14 690

原创 Preference源码包浅析

最近换了一个新业务,做设置,满篇都是Preference的东西,属于

2014-07-03 17:02:17 684

原创 Android内容提供者(ContentProvider)浅析(三)

这一篇要说两个问题,一个是ContentProvider

2014-06-18 17:05:21 729

原创 Android内容提供者(ContentProvider)浅析(二)

前文提到了,provider加载的过程,本篇着重介绍了provider是如何实现跨进行共享的。

2014-06-16 18:04:36 1737

原创 Android内容提供者(ContentProvider)浅析(一)

ContentProvider是Android系统四大基本组件中涉及到数据共享的重要角色。本文将对它的一些知识做一些简介来引导大家更好的了解这个组件。下面将从三个方面分析:1、ContentProvider的加载;2、ContentProvider的调用;3、内容监听机制1、来看看ContentProvider的加载过程,这个组件必须要在manifest文件中注册,这是有原因的,因为应用程

2014-06-14 12:15:52 662

原创 浅析Bitmap类的mBuffer

之前在很多博客和高手的口中得知3.0之后Bitmap对象的内存已经全部分配在了虚拟机的堆中,java的回收机制可以回收这块内存,一直也没有认真看看,只是停留在知其然的底部,今天抽空看了一下。一起缘起于Bitmap中的mBuffer成员变量。光看看谷歌对这个的注释就觉得有意思。      * Backing buffer for the Bitmap. * Made public f

2014-06-14 12:09:39 2650

原创 TextView中设置Span的源码浅析

大家都知道Android在设计中可以实现最简单的图文混排,也就是通过在文本中添加各种各样的Span来实现一些效果,现在就来对TextView中如何将这些span转化为画布上的特色元素的代码进行简要的分析。FrameWork中与这个操作有关系的主要是:TextView,DynamicLayout,Editor,Layout,TextLine,ParagraphStyle,CharacterSty

2014-06-14 12:04:00 1049

原创 Android广播机制实现源码浅析(三)

在上篇的分析广播收发流程的最后,我们留下了两个问题,一个是静态广播以及有序广播的处理过程,还有一个就是提过的广播超时机制。本篇将针对这两个问题进行详细的叙述。

2014-06-14 11:59:52 1981

原创 Android广播机制实现源码浅析(二)

紧接着上篇的分析,我们现在来分析一下处理广播的代码流程,也就是在方法queue.scheduleBroadcastsLocked();之后的操作这些方法在BroadcastQueue.java中。在这里能看到我们常说的广播超时,以及我们重写onReceive什么时候执行。可以看到这里在分发广播时直接post一个消息到队列中,不影响后面的此过程的后续操作,这说明发送和处理广播是一个异步操

2014-06-14 11:55:21 1458

原创 Android广播机制实现源码浅析(一)

Android系统的广播机制应用非常的广泛,是一种方便快捷的进程间通信的方式。同时它也有一些很有特殊的使用方式,比如它的两种注册方式,三种类型的广播等,这些充斥在整个系统框架中,那么为了用好广播,很有必要对其源码进行分析,从而避免一些低级失误。本文将对整个广播机制涉及到的知识做个粗略的讲解,为大家自学抛砖引玉。首先我们从注册当时入手,牵引出与本机制有关的一些类:Packageman

2014-06-14 11:51:33 2151

原创 MAT内存分析

操作步骤随笔:(1)在命令行中使用命令: adb shell am dumpheap 26828 /data/app.hprof 生成一个app.hprof文件,该文件就是该应用的内存信息文件,命令中的26828是你需要检查的应用的进程号。(2)将app.hprof文件从手机取出,并利用hprof-conv工具(SDK中的工具)进行转化。得到新的5.hprof.并利用MAT将该文件打开

2014-06-14 11:47:28 802

原创 Android应用优化(4)浅谈动画和帧率

前几天帮同事看了一个问题,就是做了一个时间助手的应用,包括了一个模拟时钟一个计时器,单独动画看着还ok,但是在ViewPager中滑动就出现了滑不动和卡顿的情况。首先,建议他把view换成surfaceview来实现,发现这样不仅没有解决问题,反而把其他fragment的界面变得滑动卡顿了。然后,仔细分析了一下代码,发现主要原因是他在实现时钟的旋转时不停的创建图片和旋转图片,这才是问题的关

2014-06-14 11:45:22 4048

原创 Android应用优化(3)APK资源图片优化

前面都是在说UI的优化,今天跑个题,扒一扒内存优化的问题为了绚丽的UI,大家的app中充斥着各种图片资源。这无可厚非,但是如果使用不当则会使得你的APK占用大量的内存,导致系统资源紧张,甚至应用outofmemory。很多人好奇Bitmap和Drawable有什么区别,貌似图片用drawable的方式要优于使用bitmap的方式?为什么使用.9图片会减少内存的占用?怎么使用设置资源

2014-06-14 11:42:27 944 1

原创 Android应用优化(2)View cache的优化

在Android的显示机制中,View的软件渲染都是基于bitmap图片进行的处理。并且刷新机制中只要是与脏数据区有交集的视图都将重绘,所以在View的设计中就有一个cache的概念存在,这个cache无疑就是一个bitmap对象,它的存在本来是用来提高view绘制效率的,但是往往在应用的设计中也是一个影响性能的因素。先看看关于cache概念的一些API吧,从中我们可以得到一些有效信息。

2014-06-14 11:39:03 1462

原创 Android应用优化(1)窗口背景

从本篇开始,我将在开发中遇到的应用优化问题进行一点经验的分享。在UI开发中渲染这个概念相信大家都不陌生,这是优化UI的重点,Android系统支持的硬件加速就是对渲染模型的一个优化。可是不使用这个我们在软件渲染时也有一些小技巧来进行优化。今天要说的很简单--窗口背景在开发Activity组件时一般都会给当前的Layout设置背景的,其实这里的Window也是有背景的,如果Lay

2014-06-11 15:20:02 735

原创 Android属性动画工作原理

Android提供了属性动画这个强大的框架来帮助开发者实现比较复杂的动画。网上已经有很多帖子为大家介绍属性动画的使用,先给大家推荐一篇写的比较好的。本文不讲使用方法,是从源码的角度来分析属性动画框架的工作原理。先引出几个关键的类:ObjectAnimator,ValueAnimator,PropertyValuesHolder和Choreographer。我们从ObjectAnimat

2014-06-11 15:12:32 965

原创 AsyncTask使用问题

AsyncTask是Android提供的一个轻量级异步任务类,可以用来进行一些耗时操作,但是这个东西设计得很有意思,使用也得非常小心,稍有不慎就会出现一些不可预见的问题。先列举一下都有哪些风险然后再从源码分析这些风险产生的原因,最后提出一些解决办法。1、    AsyncTask无法重复执行2、    多个AsyncTask请求处理时,由于某个任务卡住导致其他请求无法做出相应3、 

2014-06-11 14:58:54 747

原创 博客搬家

由于之前都是在eoe论坛写的

2014-06-11 14:55:10 593

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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