• 四月24

    StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题。比如,如果你在UI线程中进行了网络或者磁盘操作,StrictMode就会通过Log(logcat )或者对话框的方式把信息提示给你,因为让你的UI线程处理这里操作会被认为是不规范的做法,可能会让你的应用变得比较卡顿。

    官网文档: http://developer.android.com/reference/android/os/StrictMode.html

  • 三月12

    中文原文地址:http://www.eoeandroid.com/thread-258233-1-1.html

    英文原文地址:http://developer.android.com/training/articles/perf-anr.html

    It's possible to write code that wins every performance test in the world, but still feels sluggish, hang or freeze for significant periods, or take too long to process input. The worst thing that can happen to your app's responsiveness is an "Application Not Responding" (ANR) dialog.

    编写的代码能够通过每一个性能测试,但在有些时候,仍然感觉程序有明显的停顿,或是需要很长时间才能处理输入。最糟糕的事情是在程序中弹出“应用没有响应”(ANR)对话框。

    In Android, the system guards against applications that are insufficiently responsive for a period of time by displaying a dialog that says your app has stopped responding, such as the dialog in Figure 1. At this point, your app has been unresponsive for a considerable period of time so the system offers the user an option to quit the app. It's critical to design responsiveness into your application so the system never displays an ANR dialog to the user.

    在Android中,系统为了防止应用程序在一段时间内反应不足,就会弹出一个对话框说明你的应用程序已经停止响应。当出现这个情况,说明你的应用程序已经在相当长的一段时间内没有响应,所以系统为用户提供了一个选项,来退出应用程序。所以关键是要设计好程序的响应机制,系统不会显示ANR对话框。

    This document describes how the Android system determines whether an application is not responding and provides guidelines for ensuring that your application stays responsive.

  • 二月17

    本文内容翻译自:http://developer.android.com/training/articles/memory.html

    随机存取存储器(RAM)再任何软件开发环境中都是宝贵的资源,但是在移动操作系统中,内存资源更为宝贵,使用时也会收到限制。虽然Android的Dalvik虚拟机有运行时的垃圾回收机制,但是这不意味着你的App可以随便使用内存。

    为了让垃圾回收器回收内存,你得避免造成内存泄漏(通常是持有全局对象的引用造成的),并且在适当的时候释放Reference类型的对象(下文中会进一步讨论这个问题)。对于大多数App,Dalvik虚拟机的垃圾回收器会处理好剩下的内存回收:当对象离开当前活动线程的作用域时,系统会回收其内存空间。

  • 二月10

    SparseArray是Android框架独有的类,在标准的JDK中不存在这个类。它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行auto-boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用两个一维数组来保存数据,一个用来存key,一个用来存value)不需要额外的额外的数据结构(主要是针对HashMap中的HashMapEntry而言的)。是骡子是马得拉出来遛遛,下面我们就通过几段程序来证明SparseArray在各方面表现如何,下面的试验结果时在我的Hike X1(Android 4.2.2)手机上运行得出的。

  • 一月29

    以前做Web开发时,在上线前我们会把png和jpg图片再压缩一遍,已保证文件最小。Android中会使用大量的png图片来绘制UI组件,由此我们也自然联想到是否可以通过同样的手段来优化Android中的PNG图片,进而减小apk文件的大小。但是经过实验证明,这种做法是徒劳的,因为在打包的过程中Android自带的aapt工具已经自动帮你做了这件事,而且目前我还没有发现如何可以改变这种方式(比如禁用自动优化,或者改变压缩比)。

  • 一月26

    本文主要关心一些性能优化小技巧——“微优化”,这些技巧并不一定给你的应用带来令人激动人心的性能提升,但是把这些技巧结合起来使用,也会给你的应用带来一些性能上的提高。在性能优化方面,选择正确的算法和数据结构永远是你的第一选择,但是这不是本文所要介绍的重点。你应该把本文所提到技巧运用到日常的开发中,并努力使其成为你的编码习惯的一部分。

  • 一月17

    在java中,同样的方法被声明不通的类型在访问速度上会有不同吗?如果不通会有多大差异?让我们功过实验来证明这一切。

  • 一月11

    javap是jdk自带的一个工具,可以反编译class文件,是我们在做java代码性能分析时必不可少的一个工具。 我们先写个简单的代码,然后我们在逐个分析 javap 解析出来的内容。