- 博客(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的包管理机制浅析(二)
本篇是前文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
转载 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
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人