摘要:
随着移动互联网的发展,网络编程也就越来越多的被用到,如果是消息传输的话,我想大家大部分会采用JSON的格式传输,也可能采用其它的格式,但是,在这我向大家推荐一种格式MessagePack,http://msgpack.org/这是它的官网,其实说白了就是通过第三方根据一定的格式来压缩数据,然后到server再按照它的那种格式解压缩。其实我个人感觉挺简单的(官网上的例子已经很清楚了),但是,在使用的时候会遇到一些想不到的问题。 首先,我还是简单的给大家介绍一下怎么使用吧! 开始前的准备,需要导入MessagePack的类库,但是仅仅导入msgpack-*.jar是不够的,你还需要导... 阅读全文
摘要:
别的类能通过sendBroadcast()方法收到intent.有两种方式注册一个receiver,一种是动态注册:context.registerReceiver().另一种是静态注册即:通过写<receiver>标签到AndroidManifest.xml.如果你在Activity.onResume()方法里注册一个receiver,你应该反注册它在Activity.onPause().(当pause的时候,你将收不到intent),不要反注册在Activity.onSaveInstanceState()方法里,因为它不会被call,如果用户返回。 有两个主要的broadcas 阅读全文
摘要:
前几天我在做android程序的时候,由于一些错误,导致我emulator出错,再运行的时候就会报:emulator: ERROR: the user data image is used by another emulator. aborting。后来我check了一下,我总结了两种方式来解决这种问题:第一种是:打开C盘下的users --> your login name --> .android --> avd --> your name of avd, 然后你就会发现有几个文件夹名字是以.lock结尾,你需要做的就是把这些文件夹删除,重启一下你的emulator 阅读全文
摘要:
AIDL服务只支持有限的数据类型,因此,如果用AIDL服务传递一些复杂的数据就需要做更一步处理。AIDL服务支持的数据类型如下:1.Java的简单类型(int、char、boolean等)。不需要导入(import)。2.String和CharSequence。不需要导入(import)。3.List和Map。但要注意, List和Map对象的元素类型必须是AIDL服务支持的数据类型。不需要导入(import)。4.AIDL自动生成的接口。需要导入(import)。5.实现android.os.Parcelable接口的类。需要导入(import)。以下是需要import进行导入的操作。Ste 阅读全文
摘要:
我在写这篇文章之前,我对Java内部类也不是很清楚,只知道简单的应用。前几天有个朋友问我怎么理解Java内部类,我当时就有点傻了,想了半天也没有说出来,我想,如果让大家来回答这个问题,大家该怎么回答呢?我估计,总有一些人回答不上来的,或者说回答的不够完整。我特意查了查,自己又总结了总结,在这给大家分享一下。 在说之前,我先列出几个问题: 1.外部类(非主类)通过怎样的方式访问内部类? 2.内部类能不能访问主类私有的属性,为什么? 3.内部类能不能继承别的类和接口? 4.内部类能不能是static的? 5.在主类的方法里面可不可以定义内部类? 6.初 阅读全文
摘要:
安装Android 2.3有两种方法:1.从官方直接下载Android 2.3 SDK。 2.从SDK 2.2更新到2.3。 在这,我就不说第一种了,没什么可说的。我就说说第二种吧。 我是在Windows下的android-sdk-windows里更新的,并没有去Eclipse更新,我就给大家说说我更新的步骤吧: 第一步:打开你的Android SDK and AVD Manager,先别急着下载什么的,因为你现在什么也下载不了,因为你必须先在Setting里面的Misc下面勾上Force https://......sources to be fetched using http:/ 阅读全文
摘要:
搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences。 使用SharedPreferences保存key-value对的步骤如下: (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreference... 阅读全文
摘要:
这是最后一篇有关内存管理的文章,其实内存管理有许多技巧和方式,在这,我给大家介绍一下。 (1)要尽早的释放无用对象的引用。如果,该对象不用了,你可以把它设置为null。但要注意,如果该对象是某方法的返回值,千万不要这样处理,否则你从该方法中得到的返回值永远为空,而且这种错误不易被发现,因此这时很难及时抓住、排除NullPointerException异常。(2)尽量少用finalize函数。因为它会加大GC的工作量,因此尽量少用finalize方式回收资源。 (3)如果需要使用经常用到的图片,可以使用soft应用类型(也就是转换为软引用类型),它可以尽可能将图片保存在内存中,供程序调用,而不 阅读全文
摘要:
我们知道类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,为了节省系统内存开销、共享资源,应该将一些变量声明为静态变量。通过下面的例子,你就会发现有什么不同。代码一:[代码]代码二:[代码]我想大家应该发现上面那两个类的区别了吧!代码一会在内存中保存20000个weeks的副本,而代码二则在内存中保存1个weeks的副本,然后共享该副本,这样的话就不会造成内存的浪费。虽然静态的变量能节约大量的内存,但是并不是所有的地方都适合用,建议大家在下列条件都符合的情况下,尽量用静态变量:(1)变量所包含的对象体积较大,占用内存较多。(2)变量所包含的对象生命周期较长。(3)变量所 阅读全文
摘要:
上次说到了JVM的垃圾回收机制和JVM中对象的生命周期,今天给大家讲个方法,叫做析构方法finalize,我想搞过C++的人都知道,而且是内存管理技术中相当重要的一部分。但是,在Java中好像没有这个概念,这是因为,理论上JVM负责对象的析构(销毁与回收)工作,finalize是Object类中的一个方法,并且是protected,由于所有的类都继承了Object对象,因此,就都隐式的继承了改方法,不过可以重写这个方法,如果重写此方法,最后一句必须写上super.finalize()语句,因为finalize方法没有自动实现递归调用。那我们在什么时候要重写它呢?当有一些不容易控制并且非常重要的 阅读全文