03 2013 档案
摘要:Android 的 ADT 版本升级到 ADT 20.0 后,当我们尝试向布局文件中添加EditText 控件时会发现布局文件不能正常显示,同时会报错Exception raised during rendering: java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry; 临时解决方法如下:在EditText 的属性中加入android:inputType="textNoSuggestions" 即可。<?xml version="1.0" encoding="utf-8"?
阅读全文
摘要:Eclipse 下一行代码的默认宽度是 80 , 稍长一点的一行代码就会自动换行,代码可读性较差,我们可以自己在 Eclipse 对代码宽度进行设置。设置路径为:【Window】→【Preferences】→【Java】→【Code Style】→【Formatter】,点击“new”新建一个“Profile”。我在这里新建名为"MyEclipse"的“Profile”,选中“Line Wrapping”,修改其下的“Maximum line width”的数值,我在这里修改为“160”,这样 Eclipse 下就能显示更长一些的单行代码了。
阅读全文
摘要:如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。本文介绍的是Overload和Override的区别。Overload是重载的意思,Override是覆盖的意思,也就是重写。重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数、类型或顺序不同)。重写(Override) 表示子类中的方法可以与父类中的某个方法的名称 和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子
阅读全文
摘要:使用 draw9patch.bat 时出现 “Failed to convert path to a short DOS path: C:\Windows\system32\java.exe” 报错与操作系统和 JDK 的版本有关,一般 64 位操作系统下会出现这种问题,详细信息可以参考下图:解决方法:用编辑器打开 draw9patch.bat 发现这段代码,这个是用来查找 Java 的。rem Check we have a valid Java.exe in the path.set java_exe=call lib\find_java.batif not defined java_ex
阅读全文
摘要:有时候在自己电脑上编译通过的 Java 代码,在别人那里却编译不通过,总是 @override 报错,通常的处理方式是将 @override 去掉,但不能从根本上解决问题。据说这是 JDK 的问题,@Override 是 JDK5 就已经有了,但有个小小的 Bug,就是不支持对接口的实现,认为这不是 Override 而 JDK6 修正了这个 Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上 @Override。同时要注意的是 @override 报错的情况不仅发生在通常的代码中,有时如果程序中使用了 AIDL 文件,系统在自动生成 Gen 目录下对应的接口文件时也会因为这个 Bug
阅读全文
摘要:线程的 4 个主要周期状态为创建线程、可执行(Runnable)、非可执行、终止(Dead)。当实例化一个 Thread 并执行 start() 之后,线程进入 Runnable 状态并开始执行 run() 方法。虽然线程看起来像是同时执行,但事实上在同一时间点上,还是只有一个线程在动作,只是线程之间切换的动作很快,所以看起来像是同时执行。线程尤其优先权,由 1 (Thread.MIN_PRIORITY)到 10 (Thread.MAX_PRIORITY),默认是 5 (Thread.NORM_PRIORITY)。可以使用 Thread 的 setPriority() 方法来设定线程的优先权,
阅读全文
摘要:服务(Service)是一种在后台运行,没有界面的组件,由其他组件调用开始。Android中的服务和Windows中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务(Service)的实现1. 定义类继承Service,重写onCreate()、 onStart(Intentintent,intstartId)、onBind(Intentintent)、 onUnbind(Intentintent)、onDestroy()中需要的方法。2. 在清单文件的<application>节点下声明<service>。<applica
阅读全文
摘要:在模拟器下加载体积较大的图片时可能会导致内存溢出,在 LogCat 中会看到 java.lang.OutOfMemoryError: bitmap size exceeds VM budget 的报错,但是同样的程序在真机上运行时候却不会发下因为内存溢出导致程序的崩溃。这是因为 Android 系统的手机在系统底层指定了堆内存的上限值,大部分手机的缺省值是 16MB,不过也有些高配置的机型是 24MB 的,所以我们的程序在申请内存空间时,为了确保能够成功申请到内存空间,应该保证当前已分配的内存加上当前需要分配的内存值的总大小不能超过当前堆的最大内存值,而且内存管理上将外部内存完全当成了当前堆的
阅读全文
摘要:项目在代码混淆过程中如果引用了第三方 Jar 包,需要在混淆的脚本文件中加入第三方 Jar 包的声明。部分第三方 Jar 包虽然在混淆脚本中进行了声明,但是在混淆过程中经常会发现内部类或者引用文件找不到的现象,这种现象在 android-support-v4.jar 中更为常见,经过自己的不断调试得到了可以通过 android-support-v4.jar 代码混淆的配置信息,只需要将配置信息加入到 proguard.cfg 文件中即可。配置信息如下:-libraryjars ./libs/android-support-v4.jar-dontwarn android.support.v4.*
阅读全文
摘要:Fragments 诞生初衷Android 在 3.0 的版本中引入了 Fragments 的概念,根据词海的翻译可以译为:碎片、片段。其目的主要是为支持大屏幕设备上更加动态和灵活的 UI 设计,比如平板电脑。由于平板电脑比手机拥有更大的屏幕显示,所以平板电脑就会有足够的空间来进行组件的交互和整合。Fragments 的设计不需要你来管理视图显示的复杂变化,而是通过将 Activity 的布局分散到 Framents 中,就可以在运行时修改 Activity 的外观,并且将这些改变保存到由这个 Activity 管理的一个返回栈中。例如,在一个新闻应用程序中,两个并排显示在同一个 Activi
阅读全文
摘要:一般有点开发经验的朋友都能实现这样的功能,只不过是效率上的问题。我们一般在面对这样的问题时,总会平铺直序的联想到,先生成一个数组,然后在一个循环中向数组中添加随机数字,在添加数字的过程中先查找一下数组中是否存在这个数字,如果不存在这个数字就直接添加到数组中;如果存在这个数字就不添 加。我们一般都是这样考虑问题的,这样考虑也能实现功能,我刚才也说了,只不过是效率上的问题。为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100 的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复。在这里,没有给我们规定数组的长度,我们可以让它是1-100之间的任意长度。接下来让我们看一
阅读全文
摘要:1. 对图片本身进行操作尽量不要使用 setImageBitmap、setImageResource、 BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 decode 后,最终都是通过 Java 层的 createBitmap 来完成的,需要消耗更多内存。因此,改用先通过 BitmapFactory.decodeStream 方法,创建出一个 bitmap,再将其设为 ImageView 的 source,decodeStream 最大的秘密在于其直接调用 JNI>>nativeDecodeAsset() 来完成 decode,无需再使用
阅读全文
摘要:当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员工!'); 出现乱码时,可以使用语句show variables like 'character%'; 来查看当前数据库的相关编码集。从上图中可以看到 MySQL 有六处使用了字符集,分别为:client 、connection、database、res
阅读全文
摘要:什么是代码混淆Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种...
阅读全文