摘要: 本篇文章为在工作中使用JAVA反射的经验总结,也可以说是一些小技巧,以后学会新的小技巧,会不断更新。本文不准备讨论JAVA反射的机制,网上有很多,大家随便google一下就可以了。 在开始之前,我先定义一个测试类Student,代码如下: 1 package chb.test.reflect; 2 3 public class Student { 4 private int age; 5 private String name; 6 public int getAge() { 7 return age; 8 } 9 public void setAge(int age) { 10 this.a 阅读全文
posted @ 2011-05-10 19:40 S.Kei.Cheung 阅读(971) 评论(0) 推荐(0) 编辑
摘要: Field getField(String name)返回已加载类声明的所有public成员变量的Field对象,包括从父类继承过来的成员变量,参数name指定成员变量的名称而Field getDeclaredField(String name)不能获取从父类那继承过来的成员变量*********************************************** 1 package cn.com.vo; 2 3 public class Father { 4 public String name="父亲"; 5 6 public String sex=" 阅读全文
posted @ 2011-05-10 19:34 S.Kei.Cheung 阅读(1923) 评论(0) 推荐(0) 编辑
摘要: 代理模式(Proxy Pattern)——.NET设计模式系列之十四Terrylee,2006年5月摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。主要内容1.例说Proxy模式2.Proxy模式效果及实现要点……概述在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中 阅读全文
posted @ 2011-04-28 19:40 S.Kei.Cheung 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 本文参考了官方Dev Guide文档,简单介绍Android下的affinities和任务(task)。Activity和Tasktask就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个 activity所在的task栈。当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。这样,从用户角度 来看,这两个activity就好像是属于同一个应用程序的,即使第二个activity是属于另外一个应用程序的。当然,这是指默认情 阅读全文
posted @ 2011-04-26 20:44 S.Kei.Cheung 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 我们讲到如何通过扩展ArrayAdapter来将其里面所装的对象展现在自定义的View里,其中有涉及到展现ListView的效率问题。这边我们在分析下到底ListView是如何创建整个UI,而我们要如何才能写出运行效率高的代码,也顺便了解下如何使用android内置的支持更方便的编写一个ListView。假设我们要显示一个有1000行数据的ListView,这样的数据量在手机中应该算很庞大了,那ListView会如何处理呢,以让系统运行时占用的空间时间最优化呢?其实在ListView中有使用懒加载机制以提高显示的效率。在很多系统架构中我们都可以看到懒加载机制,如hibernate的懒加载机制, 阅读全文
posted @ 2011-04-26 20:23 S.Kei.Cheung 阅读(993) 评论(0) 推荐(0) 编辑
摘要: Android中JNI编程的那些事儿首先说明,Android系统不允许一个纯粹使用C/C++的程序出现,它要求必须是通过Java代码嵌入Native C/C++——即通过JNI的方式来使用本地(Native)代码。因此JNI对Android底层开发人员非常重要。如何将.so文件打包到.APK让我们先从最简单的情况开始,假如已有一个JNI实现——libxxx.so文件,那么如何在APK中使用它呢?在我最初写类似程序的时候,我会将libxxx.so文件push到/system/lib/目录下,然后在Java代码中执行System.loadLibrary(xxx),这是个可行的做法,但需要取得/sy 阅读全文
posted @ 2011-04-12 04:51 S.Kei.Cheung 阅读(8205) 评论(0) 推荐(1) 编辑
摘要: 在Android开发中,涉及到JNI时,有时会报告非常底层栈信息,在栈信息中 仅仅给出了.so文件出错位置的地址,根本看不成问题所在,但是如果使用arm-eabi-addr2line 命令,就可以把地址信息转换成方法名称:arm-eabi-addr2line 命令 在%ANDROID_SOURCE%\prebuilt\linux-x86\toolchain\arm-eabi-4.4.0\bin;例如有如下的栈信息:02-21 13:34:39.621 I/DEBUG ( 79): pid: 394, tid: 560 >>> android.process.media < 阅读全文
posted @ 2011-04-12 04:46 S.Kei.Cheung 阅读(780) 评论(0) 推荐(0) 编辑
摘要: 释放资源 即AudioRecord.release()方法,前两天自己随手想到的一个函数,写入还真有,而且正是想要的方法--释放当前占用的资源,但是在使用中可能遇到各种各样的问题,不适用它问题就更严重了。目前很多网上关于AudioRecord的讲解都没有考虑release这个方法,或者google code上面一些方法不需要release资源。但是在用的时候,尤其来电时释放mic资源是一种必须的需求,所以还是要用到release方法释放mic资源。个人感觉各式各样的网络流行版本中,http://blog.csdn.net/zhjp4295216/archive/2010/11/09 /5996 阅读全文
posted @ 2011-04-12 04:40 S.Kei.Cheung 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 1.手机信息查看助手可行性分析 开始进入编写程序前,需要对需求的功能做一些可行性分析,以做到有的放矢,如果有些无法实现的功能,可以尽快调整。 这里分析一下项目需要的功能,主要是信息查看和信息收集,如版本信息、硬件信息等,这些都可以通过读取系统文件或者运行系统命令获取,而像获取安装的软件信息和运行时信息则需要通过API提供的接口获取。实现API接口不是什么问题,主要把精力集中在如何实现运行系统命令,获取其返回的结果功能实现上。具体实现代码如下所示: 1 public class CMDExecute { 2 3 public synchronized String run(String [] c 阅读全文
posted @ 2011-04-08 18:40 S.Kei.Cheung 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。 DllImport所在的名字空间 using System.Runtime.InteropServices; MSDN中对DllImportAttribute的解释是这样的:可将该属性应用于方法。DllImportAttribute 属性提供对从非托管 DLL 导出的函数进行调用所必需的信息。作为最低要求,必须提供包含入. 阅读全文
posted @ 2011-04-07 22:10 S.Kei.Cheung 阅读(927) 评论(1) 推荐(0) 编辑