通常我们在布局文件中使用自定义属性的时候会这样写:xmlns:app="http://schemas.android.com/apk/res/包路径"
但如果你当前工程是做为lib使用,那么你如上所写,会出现找不到自定义属性的错误。
这时候你就可以写成:xmlns:app="http://schemas.android.com/apk/res-auto"
通常我们在布局文件中使用自定义属性的时候会这样写:xmlns:app="http://schemas.android.com/apk/res/包路径"
但如果你当前工程是做为lib使用,那么你如上所写,会出现找不到自定义属性的错误。
这时候你就可以写成:xmlns:app="http://schemas.android.com/apk/res-auto"
很多时候我们需要考虑Android平台上的内存管理问题,Dalvik VM给每个进程都分配了一定量的可用堆内存,当我们处理一些耗费资源的操作时可能会产生OOM错误(OutOfMemoryError)这样的异常,Android123观察了下国内的类似Market客户端设计,基本上都没有采用很好的内存管理机制和缓存处理。
在Java中内存管理,引用分为四大类,强引用HardReference、弱引用WeakReference、软引用SoftReference和虚引用PhantomReference。它们的区别也很明显,HardReference即正常实例化一个对象,即使虚拟机内存吃紧抛出OOM也不会导致这一引用的对象被回收;而WeakReference等更适合于一些数量不多,但体积稍微庞大的对象,在这四个引用中,它是最容易被垃圾回收的;而我们对于显示类似Android Market中每个应用的App Icon时可以考虑使用SoftReference来解决内存不至于快速回收,同时当内存短缺面临Java VM崩溃抛出OOM前时,软引用将会强制回收内存;最后的虚引用一般没有实际意义,仅仅观察GC的活动状态,对于测试比较实用同时必须和ReferenceQueue一起使用。
大家都知道,在Java中,synchronized 是用来表示同步的,我们可以synchronized 来修饰一个方法(实例方法和类方法—注:不知道这样叫准确不准确,大家理解我的意识就行了)。也可以synchronized 来修饰方法里面的一个语句块。
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作。比如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递增。在需要访问两个或两个以上 atomic变量的程序代码(或者是对单一的atomic变量执行两个或两个以上的操作)通常都需要被synchronize以便两者的操作能够被当作是一个atomic的单元。