2013年4月9日
摘要: onDraw是在View初化完成之后开始调用postInvalidate()是重绘的,也就是调用postInvalidate()后系统会重新调用onDraw方法画一次,android中Invalidate和postInvalidate的区别Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在 阅读全文
posted @ 2013-04-09 21:56 simon_god 阅读(2247) 评论(0) 推荐(2) 编辑
摘要: 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框。当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢? 幸运的是,android提供了这种问题的解决方案,刚开始接触android的时候,我在做一个自定义对话框的时候,. 阅读全文
posted @ 2013-04-09 21:55 simon_god 阅读(996) 评论(0) 推荐(0) 编辑
摘要: 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader。今天特地将它单独拿出来谈,加深自己和大家对Android 中使用 Cursor 的理解。关于 Cursor在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:Cursor 是每行的集合。使用 moveToFirst() 定位第一行。你必须知道每一列的名称。你必须知道每一列的数据类型。Cursor 是一个随机的数据源。所有的数据都是通过下标取得。关于 Cursor 的重要方法:cl 阅读全文
posted @ 2013-04-09 21:54 simon_god 阅读(161) 评论(0) 推荐(0) 编辑
摘要: ****************************************************These are JNI global references. If you're not writing native code, you don't have direct control over them. The log messages appear when CheckJNI is enabled, which is on by default for engineering builds and the emulator.The messages just 阅读全文
posted @ 2013-04-09 21:51 simon_god 阅读(1392) 评论(0) 推荐(0) 编辑
摘要: linux bus谨以此文纪念过往的岁月。在linux中bus很重要,主要是bus连接了devices和drivers,devices和drivers通过bus来进行一对一的匹配。记录学习bus的过程,如有错误请指正。1.bus的注册以及bus属性文件的创建注册一个bus一如注册一个设备和驱动一样,在内核中调用API就可以,如果仅仅满足于知道怎么去调用API则不是一个好的驱动工程师。在注册bus时,注意一个区别xx_bus和xx_bus_type,对于这两个区别,在看其结构时就应该分清楚,xx_bus是设备类型,xx_bus_type是总行类型,xx_bus作为以后其隶属于该bus的设备的父设 阅读全文
posted @ 2013-04-09 11:52 simon_god 阅读(1415) 评论(0) 推荐(0) 编辑
摘要: 在用到Linux设备驱动的platform框架时,常常会遇到两个函数platform_get_drvdata和 platform_set_drvdata。通常,会在驱动的probe函数中获取device的相关信息,然后使用 platform_set_drvdata进行保存。在其他函数中要用到时(比如remove),通过platform_get_drvdata来获取。 内核中的定义为:#define platform_get_drvdata(_dev)dev_get_drvdata(&(_dev)->dev)#define platform_set_drvdata(_dev,dat 阅读全文
posted @ 2013-04-09 10:44 simon_god 阅读(4649) 评论(0) 推荐(0) 编辑
摘要: static void write_image(const void *data, const int size, int width, int height, const char *name){ char filename[80]; static unsigned int count = 0; size_t bytes; FILE *fp; snprintf(filename, sizeof(filename), "/data/shen/dump_%d_%d_%03u_%s", width, height, count, name); fp =... 阅读全文
posted @ 2013-04-09 09:44 simon_god 阅读(306) 评论(0) 推荐(0) 编辑
  2013年4月8日
摘要: 应用安装涉及目录: system/app ---------------系统自带的应用程序,获得adb root权限才能删除 data/app ---------------用户程序安装的目录。安装时把 apk文件复制到此目录 data/data ---------------存放应用程序的数据 data/dalvik-cache--------将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一) 安装过程: 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码) 阅读全文
posted @ 2013-04-08 21:48 simon_god 阅读(1377) 评论(0) 推荐(0) 编辑
摘要: 1 log文件分类简介 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shell cat /proc/kmsg ,adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport,工程模式等 2 LOG抓取详解l 实时打印 adb logcat -b main -v time>app.log 打印应用程序的log adb logcat -b radio -v time> radio.log 打 阅读全文
posted @ 2013-04-08 21:46 simon_god 阅读(470) 评论(0) 推荐(0) 编辑