04 2011 档案

摘要:代理模式(Proxy Pattern)——.NET设计模式系列之十四Terrylee,2006年5月摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切。这就是本文要说的Proxy模式。主要内容1.例说Proxy模式2.Proxy模式效果及实现要点……概述在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中 阅读全文
posted @ 2011-04-28 19:40 S.Kei.Cheung 阅读(242) 评论(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 阅读(412) 评论(0) 推荐(0)
摘要:我们讲到如何通过扩展ArrayAdapter来将其里面所装的对象展现在自定义的View里,其中有涉及到展现ListView的效率问题。这边我们在分析下到底ListView是如何创建整个UI,而我们要如何才能写出运行效率高的代码,也顺便了解下如何使用android内置的支持更方便的编写一个ListView。假设我们要显示一个有1000行数据的ListView,这样的数据量在手机中应该算很庞大了,那ListView会如何处理呢,以让系统运行时占用的空间时间最优化呢?其实在ListView中有使用懒加载机制以提高显示的效率。在很多系统架构中我们都可以看到懒加载机制,如hibernate的懒加载机制, 阅读全文
posted @ 2011-04-26 20:23 S.Kei.Cheung 阅读(1008) 评论(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 阅读(8241) 评论(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 阅读(812) 评论(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 阅读(707) 评论(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 阅读(737) 评论(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 阅读(947) 评论(1) 推荐(0)
摘要:摘要:在《csdn开发高手》2004年第03期中的《化功大法——将DLL嵌入EXE》一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也有相似的VB程序,但在某一技术论坛上提起这种设计方法时,有网友提出:“这种方法好是好,但就是启动速度太慢”。这是因为程序启动时实现DLL释放,然后再加载释放出来的DLL,这个过程会耗费一定的时间。鉴于此问题,经过 阅读全文
posted @ 2011-04-07 20:37 S.Kei.Cheung 阅读(704) 评论(1) 推荐(0)
摘要:/**********************************************************功能:通过C#程序调用Windows记事本程序编辑*名为test.txt的文本文件。**在整个程序中System.Diagnostics.Process.Start(Info)*为语句。*只是单独执行一个外部程序,可用一条如下代码即可:*System.Diagnostics.Process.Start(*"外部程序名","启动参数");**************************************************** 阅读全文
posted @ 2011-04-06 12:07 S.Kei.Cheung 阅读(445) 评论(0) 推荐(0)
摘要:背景 在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。步骤1. 创建一个CSharpInvokeCPP的解决方案:2. 创建一个C++的动态库项目:3. 在应用程序设置中,选择“DLL”,其他按照默认选项:最后点击完成,得到如图所示项目: 我们可以看到这里有一些文件,其中dllmain.cpp作为定义DLL应用程序的入口点,它的作用跟exe文件有个main或者WinMain入口函数是一样的,它就是作为DLL的一个入口函数,实际上它是个可选的文 阅读全文
posted @ 2011-04-05 21:41 S.Kei.Cheung 阅读(1708) 评论(0) 推荐(0)
摘要:首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore输入keystore密码:再次输入新密码:您的名字与姓氏是什么? [Unknown]: qiaoling您的组织单位名称是什么? [ 阅读全文
posted @ 2011-04-03 13:29 S.Kei.Cheung 阅读(510) 评论(0) 推荐(0)