自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(269)
  • 资源 (9)
  • 收藏
  • 关注

原创 为什么说Parcelable 比Serializable更高效

什么是序列化,实现序列化的目的是什么?讨论这个问题之前,我们要明白什么是序列化?序列化就是为了 实现将对象状态转换为可保持或传输的格式的过程。目的主要有以下三点:1)永久性保存对象,保存对象的字节序列到本地文件中;2)通过序列化对象在网络中传递对象;3)通过序列化在进程间传递对象。为什么说Parcelable 比Serializable更高效1)在使用内

2012-11-12 00:00:55 5229 2

原创 android中最常见处理异步任务的组件

1.主线程中handler可以实现异步(但此处不宜将将耗时的操作直接放handleMessage里面处理,可以post一个Runnable);2.非主线程通过Handler+Looper实现异步;3.AsyncTask实现异步;4.AsyncQueryHandler实现异步;5.IntentService实现异步;6.HandlerThread+Handler实现异步;7.

2012-11-11 12:04:27 2711

原创 12条在android开发中的代码优化建议

1.For each比其它的循环方式高效;2.访问本地局部变量比类变量高效;3.字符串拼接StringBuilder比String高效;4.用静态内部类往往会更高效;5.Handler传递消息比Broadcast Receiver广播高效;6.Parcelable比Serializable高效;7.插入多条数据到数据库用事务比循环插入多条数据高效;8.完成相同功能,层次

2012-11-10 23:54:50 2366

原创 图解android的单线程UI机制(以最简单的方式)

1.Looper简单点说就是一个while无线循环,android的UI单线程模型比较常见,这和单线程的服务器也很类似,通常每一个线程最多有一个Looper;2.MessageQueue的名字有点误导我们,它其实并不是一个queue,而是负责从handler那里接受Message,然后往消息链表里面放,或者到时间从消息队列里面取出消息交给Handler去处理,扮演着一个中间人的作用;3.M

2012-11-10 22:30:23 4057

原创 解析HttpProtocolParams的setUseExpectContinu函数(Expect 100-continue)

在分析这个问题之前我们需要了解一下什么是“Expect 100 Continue”和它到底是怎么去影响我们的http请求的,我们可以先看一下官方的解释是:Activates 'Expect: 100-Continue' handshake for the entity enclosing methods. The 'Expect: 100-Continue' handshake allows

2012-11-09 00:30:53 10548

原创 几点对于单实例设计模式的再认识

基础知识:1. 单实例分为饿汉式和懒汉式,两者使用的场景略有不同,也即是我们经常讨论的时间和空间的代价抉择问题,这个应根据具体的情况而定;理论误区:1.单实例类里面不应有非常量的私有变量,有即便也是常量;2.单例模式只是为了节省资源;重新认识:1.单实例里面可以有其它的私有变量,特别是和其它设计模式结合使用的时候更为普遍;2.使用单例模式是可以达到节省资源的目的,但

2012-11-08 17:26:31 2908 1

原创 android中httpclient和HttpURLConnection优缺点和常见bug解决方法

官方意见:1) apache httpclient高效稳定,但是维护成本高昂,故android 开发团队不愿意在维护该库而是转投更为轻便的httpurlconnection;2) httpurlconnection比较轻便,灵活和易于扩展,它在2.2前存在这样一个BUG,详见http://code.google.com/p/android/issues/detail?id=2939

2012-11-07 17:31:49 13278 3

原创 运算符优先级

2012-11-07 13:38:22 3736

原创 Android网络开发中出现NoHttpResponseException 或者ClientProtocolException解决方法

方法实在是很简单, 为你的httpclient添加一个retry handler就ok了。代码如下: HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() { @Override public boolean retryRequest(

2012-11-06 16:27:52 11229 6

原创 在android使用httpclient时出现“SocketException: Broken Pipe”的解决方法

原因分析:1.客户端与服务器的链接已经关闭(可能是客户端,也可能使服务器端,一般是客户端主动关闭),客户端继续向服务端写数据;2.在使用httpclient的threadsafeconnectionmanager或者poolconnectionmanger的时候容易出现,原因是我们设置了连接获取数据超时的时间;解决方法:1.为你的httpclient添加retry handler,

2012-11-06 16:19:39 7857

原创 打造增强用户体验的图片缓存方案(包含OOM处理技术)

如果你还在因为大量不同size的图片缓存产生的OOM而烦恼,如果你还在因为用软引用(SoftReference)快速回收的蛋疼用户体验而不知所措,那么我建议无论你是高手还是菜鸟,真的很有必要看一下这篇文章,希望能从中给你一些启发,给你的产品用户带去一些好的体验。思维的火花既然我们要提供用户的体验,既然我们摒弃了软应用,那么我这里才用的是使用LRU的缓存机制来达到我们的目的。在android

2012-11-06 13:35:15 8559 8

原创 非UI线程可以去刷新UI吗(timertask调用progressbar的setProgress的特例)

今天我qq群里面的大漠同学问了这样一个问题,先看看他粘贴的源代码如下:TimerTask task = new TimerTask() { public void run() { if (timeFlag) { if (timeRemain > 0) { timeRemain -= 1; timeProg

2012-11-01 12:45:14 5790 8

原创 android下实现英汉(汉英)排序的简单实现

1.引入frameworks/base/core/java/com /android/internal/util/HanziToPinyin.java文件到你的工程里面:/* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (

2012-10-31 11:29:10 4746

原创 android手机常用分辨率

QVGA(240x320)  用于1000元以下的低端Android手机,显示效果和塞班S60V3的手机一样,对软件的兼容性不好,很多应用运行起来可能会无故退出,代表机型有中兴N600、HTC G8 Wildfire等。  HVGA(320x480)  曾经的主流分辨率,现在售价在1500到2000元手机常用,运行绝大部分软件没有问题,但显示效果一般,代表机型有HTC G1、G2、G3

2012-10-10 10:25:55 16319 1

原创 解决android混淆编译出现Proguard returned with error code 1和文件名、目录名或卷标语法不正确错误

如果你在用android混淆打包的时候出现形如下面的错误:Proguard returned with error code 1. See console[2012-09-25 09:50:39 - estore3601] Error: @C:\Users\hp\AppData\Local\Temp\android_5192919586673521494.pro (文件名、目录名或卷标

2012-09-25 10:11:40 8310 2

原创 android上如何实现后台日志记录并写文件到sd卡

原因分析什么时候需要将我们的日志写到文件,并存储起来查看呢,我总结一下大概有几种情况:1.debug alarm manager 启动的service,你想要知道是否每一次service的执行都正常,一切都是按照你所想的;2.一些重要的信息,需要保存起来做分析或者需要上传到服务器做分析的;3.开发期间,了解各个主要是网络接口的工作状态,执行效率(每个接口的执行时间)等等;过

2012-09-06 00:08:56 17118

原创 解决java.lang.IllegalArgumentException: pointerIndex out of range的错误

在网上很多关于该bug的处理都众说纷纭,我在这里不再详述该bug产生的原因,下面给出一种在4.1的机子上测试通过的方案: 1.让你的view(可能是ScrollView,WebView,MapView等),创建一个子view继承于它们中的某一个; 2.重写onInterceptTouchEvent 和onTouchEvent方法 3.try catch 该两个方法,形如下面

2012-09-04 10:52:32 14673 3

原创 android高手之路--删除工程里面无用的代码和资源

如果你是一个经常开发android应用程序或者做android维护项目的人,我想说你对我谈论的这个话题,一定会感兴趣的。因为只有做到了这两点,你的项目生成的apk包才会更小,而不是随着你的开发和维护,无用的代码和资源无限的堆积,这对开发者和维护者来说不但是噩梦,更是一个无形的炸弹。好了,废话不多说,让我们一起来看看我是如何做到上面两点的吧。清除代码工具: UCDetector1.在

2012-08-31 17:31:38 22260 18

翻译 使用LRU算法缓存图片

在您的UI中显示单个图片是非常简单的,如果您需要一次显示很多图片就有点复杂了。在很多情况下(例如使用 ListView, GridView 或者 ViewPager控件),显示在屏幕上的图片以及即将显示在屏幕上的图片数量是非常大的(例如在图库中浏览大量图片)。在这些控件中,当一个子控件不显示的时候,系统会重用该控件来循环显示 以便减少对内存的消耗。同时垃圾回收机制还会释放那些已

2012-08-27 00:30:12 12563 7

原创 android高手成长之路--怎样成为编程高手

1.Thinking In Java 和 Effective Java 那是必须经常看的2.android高性能编程要牢记于心;3.须精通Java的线程机制和熟知JVM(或Dalvink)的内存管理机制;4.熟悉Java中的几种引用类型;5.从外在上让你的代码看起来更像一个高手:尽量让你static和final关键字充满在你的代码中;6.知道如何编写更省电的

2012-08-01 13:36:05 5182 1

原创 android高手成长之路--Tools之MAT

1) 安装 Help->SoftWare Updates and Add-ons->Available software-> Add Site : http://download.eclipse.org/mat/1.0/update-site/2) 生成.hprof文件adb shellchmod 777 /data/misc  (默认的HProf (Heap Prof

2012-07-30 23:24:25 2714

原创 android代码格式化方法小结

Download the android-formatting.xml fileOpen Eclipse and go to Window->Preferences->Java->Code Style->FormatterImport the android-formatting.xml file and make sure “Android” is selected in t

2012-06-26 13:05:24 6052 1

原创 android应用架构设计目录

1.架构和数据、UI展现息息相关;1)数据居多2)图片居多3)数据和图片相当2.架构和网络流量;1)图片尽量只从网络获取一次(图片变化不频繁)2)当有新的时再获取3.架构和业务灵活扩展(大的项目或者说是产品,会不断维护的);1)保证新功能的扩展始终很容易2)不需要修改其它模块4.架构和性能(代码本身的质量、流畅、省电、省流量);5.架构和

2012-03-14 14:12:07 2902 1

原创 通过Dalvik加载自定义类(而不是从默认的dex文件里面去加载)

Posted by Tim Bray on 28 July 2011 at 8:35 AM[This post is by Fred Chung, who’s an Android Developer Advocate — Tim Bray]The Dalvik VM provides facilities for developers to perform custom cl

2012-03-11 23:32:07 1710

原创 实现手动触摸和自动无限循环的gallery

UI效果先上代码再说事:package xiaogang.zhao;import xiaogang.zhao.R;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Messa

2011-11-04 16:30:09 6352 8

原创 在android上实施不会OOM的内存管理方案

很多人埋怨在android上当listview里面加载大量图片,并且还有其它页面加载比listview里面更大的图片,大量不同类型的图片在一起,又要兼顾用户体验,这个时候应用程序就经常OOM,让人好不烦恼。下面是2种经过压力测试还能很坚挺的方法,供大家参考,指正: 方案一.简单链表+软引用管理方式1.定义一个单实例的类(e.g. EstoreCacheManager),用饿汉方式初始化

2011-10-31 15:08:19 3577

翻译 OpenDMTP协议参考指南

2)包结构/编码DMTP支持二进制和ASCII编码的包。其中的某一编码格式比另外一种编码格式更适合取决于在使用的传输媒体类型。例如,二进制更适合直接用socket建立连接的同信,而ASCII编码格式的包也许更适合通过串口、蓝牙、无线modem。2.1)二进制包二进制包有如下的通用格式:字节:长度描述0:1包头(0XE0

2011-10-30 23:27:53 1049

原创 网络编程时使用代理的原因

1.突破自身IP访问限制,访问国外站点。如:教育网、169网等网络用户可以通过代理访问国外网站。  2.访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费   代理服务器,就可以用于对教育 网开放的各类FTP下载上传,以及各类资料查询共享等服务。  3.突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为

2011-10-29 15:02:33 3288

翻译 OpenDMTP协议参考指南

1)介绍本手册讲述了OpenDMTP包结构、状态码,并定义了在使用本协议的所需要的一些属性。这个协议目前不包含专用服务器的错误代码、客户端错误代码或者是自定义事件字段类型(需要自定义事件包协商)的定义。关于这些问题的技术细节,手册所使用的头文件可以在OpenDMTP C语言开发包中找到。下面的头文件,我们可以认为是本文档的一部分:

2011-10-28 12:53:24 1937

原创 OpenDMTP概述

OpenDMTP(Open Device Monitoring and Tracking Protocol)是一个协议和框架用于在服务器和客户端设备之间通过Internet或其它相似网络进行双向数据通信。OpenDMTP是专门连接面向基于定位的信息比如GPS,也可以是从远程监控设备收集到的温度和其它数据。由于OpenDMTP非常小,所以特别适合于移动设备比PDA,移动电话和其它特定的OEM设备。

2011-10-28 11:15:46 1302

原创 conversion to dalvik format failed with error 1终极解决方法

可能很多朋友都碰到过这个让人头疼的问题,主要是我们在升级ADT之后就会出现,而且我发现我把这个问题给修复后,只要升级了eclipse,还会出现,现在我所一下具体方法吧,如果一旦出现,你只需要这么干就行了:找到android-sdk-windows\tools\proguard\bin 目录下面的proguard文件,然后打开将call %java_exe% -jar "%PROGUARD_HO

2011-10-20 11:08:26 49761 12

原创 DataGramSocket是否线程安全

(1) DatagramSocket的读写是互相独立的。 (2) DatagramSocket 写是原子的,因此是线程安全的。 (3) DatagramSocket reads读是异步的,在OS层面上也是原子的,因此也是线程安全的 。

2011-10-20 10:58:34 2333 1

原创 组合android的theme属性

发觉很多人都在问一个问题,就是如何将android:theme="@android:style/Theme.Dialog"和android:theme="@android:style/Theme.Light"属性组合起来用来呢?方法其实很简单,就是将Theme.Light设置为的application属性,而Theme.Dialog则设置为Activity的属性:

2011-10-13 12:51:56 3421

原创 android高手成长之路--Tools之FindBugs

可能很多朋友都看过金庸先生的《倚天屠龙记》,里面的倚天剑和屠龙宝刀那是何等的威风。给我们的启示是好的利器在手,胜过百万雄师。 对于开发人员也一样,好的工具能让我们事半功倍之余更能提升我们的境界和把握住软件的健壮性。因为,我们可以通过一些工具生成数据和报表,这些也是客户喜欢看到的。 第一个工具,我们先来看FindBugs。(因为我们的错误通常分为两种,静态错误和动态错误也就是运行时的

2011-10-13 12:31:08 3410

原创 android高手成长之路--Tools之MAT

1) 安装 Help->SoftWare Updates and Add-ons->Available software-> Add Site : http://download.eclipse.org/mat/1.0/update-site/2) 生成.hprof文件adb shellchmod 777 /data/misc  (默认的HProf (Heap Profil

2011-10-13 12:30:17 3946

原创 多媒体开发你必须知道的各种音频格式之间的比较

音频格式比较:音乐爱好者常见的音频格式有:flac、ape、wav、mp3、aac、ogg、wma1.压缩比比较:aac>ogg>mp3(wma)>ape>flac>wav(同一音源条件下)mp3和wma以192kbps为分界线,192kbps以上mp3好,192kbps以下wma好。2.音质比较:wav=flac=ape>aac>ogg>mp3>wma3.硬件

2011-10-12 11:12:27 10362 1

原创 intent-filter的data属性详述

一、定义            scheme, host, port, path, pathPrefix, pathPattern 是用来匹配 Intent 中的 Data Uri 的。具体规则如下:  scheme://host:port/path or pathPrefix or pathPattern这里需要注意的是这里的 scheme 不是 schema,也

2011-10-09 16:37:19 15582 2

原创 常用mimeType 表

多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。内容类型(Content-Type),这个头部领域用于指定消息的类型。一般以下面的形式出现。[type]/[subtype]type有下面的形式。Text

2011-10-08 17:04:42 7669

原创 用LinkedHashMap实现的简单LRU Cache

// Create cachefinal int MAX_ENTRIES = 100;Map cache = new LinkedHashMap(MAX_ENTRIES+1, .75F, true) { // This method is called just after a new entry has been added public boolean removeElde

2011-10-08 12:23:06 3555

原创 单例模式的常见面试题

1) 哪些类是单例模式的后续类?在Java中哪些类会成为单例?这里它们将检查面试者是否有对使用单例模式有足够的使用经验。他是否熟悉单例模式的优点和缺点。2)你能在Java中编写单例里的getInstance()的代码?很多面试者都在这里失败。然而如果不能编写出这个

2011-09-29 00:57:08 6708

android加载sd卡上没安装的apk的类

android加载sd卡上没安装的apk的activity

2012-12-18

enif项目源代码

网络接口和图片缓存框架+整个框架的使用的代码例子

2012-11-22

android上的soap裁剪包

android上的soap裁剪包,另外可以参见我的csdn上的文章;

2012-11-18

android资源清理工具

该工具,可以清理12种工程里面不用的资源,在维护项目和长期开发的项目里面,为了减小开发和维护难度,以及减小apk包的大小,作用突出,效果明显。

2012-08-31

gallery无限循环

详见:http://blog.csdn.net/androidzhaoxiaogang/article/details/6936324

2011-11-04

button在底部的多个view切换<实例三触摸和点击实现3D切换>

button在底部的多个view切换<实例三触摸和点击实现3D切换> 3d动画

2011-09-28

button在底部的多个view切换优化之<实例二3D切换>

1.将View的操作借助一个单实例的MainViewmanager分离开来; 2.实现真正意义上的MVC; 3.继续使用原来的索引也即表驱动的方式来管理view的添加和删除等;

2011-09-27

多个button互相切换view<实例二3D切换>

代码精简,结构清晰,使用了include标签,希望对大家有帮助;另外实现了3D旋转动画。

2011-09-21

多个button互相切换view<实例一>

代码精简,结构清晰,使用了include标签,希望对大家有帮助。

2011-09-21

空空如也

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

TA关注的人

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