随笔分类 -  Android

摘要:Android学习 ContentProvider数据更新与Observer模式一 Observer模式意图: 定义对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被更新。 依赖(Dependents)、发布-订阅(Publish-Subscribe)。处理一对多情况下对象之间的依赖关系。对象之间必然会存在依赖关系或者依赖关系会处于变动之中,如何解决依赖关系使他们之间的耦合性达到最小。适用性: l 当一个抽象模型有两个方面,其中一个方面依赖于另一个方面。将二者封装在独立的对象以使他们各自独立的改变和复用; l 当一个对象的改变需要同时改变... 阅读全文
posted @ 2012-06-02 10:30 __Shadow 阅读(30171) 评论(1) 推荐(4) 编辑
摘要:Android学习CursorWrapper与Decorator模式一 Decorator模式意图: 动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 动态的给一个对象,而不是对整个类添加额外职责,说明此模式将采用的结构是组合而不是继承;要给一个对象添加职责,通常可以使用其类的派生类对象替换当前对象,但这显得不够灵活,继承结构属于静态形式,系统往往并不知道有这样的类存在; 而我们需要的在某些时刻让对象具有一些额外的职责,额外的职责很可能是来自我们自己的扩展或者某些时刻的特定需求等。于是通过一种方式对现有的对象进行动态的包装(Wr... 阅读全文
posted @ 2012-05-31 09:45 __Shadow 阅读(5699) 评论(0) 推荐(2) 编辑
摘要:Android学习按键事件监听与Command模式一 Command模式意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。 将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者, 实现了动作的请求者对象和动作的执行者对象之间的解耦合。适用性:使用Command模式代替callback形式的回调应用;在不同的时刻指定、排列和执行请求,动态的更改请求;支持取消操作;支持修改日志,保存请求执行过程以便恢复操作;Command模式支持一组事务的调用操作。且易于增... 阅读全文
posted @ 2012-05-29 14:58 __Shadow 阅读(3235) 评论(0) 推荐(0) 编辑
摘要:Android学习——ActivityManager与Proxy模式的运用一 Proxy模式意图: 为其他对象提供一种代理以控制这个对象的访问。适用性: l 远程代理( Remote Proxy ): 为一个对象在不同的地址空间提供局部代表。 l 虚代理(Virtual Proxy)根据需要创建开销很大的对象。使用一个代理对象作为代表,在真正的需要时进行创建。 l 保护代理(Protection Proxy):控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。 l 智能指引(Smart Reference): 取代了简单的指针,它在访问对象时执行一些附加操作。对指向... 阅读全文
posted @ 2012-05-25 09:37 __Shadow 阅读(21519) 评论(3) 推荐(4) 编辑
摘要:Android中Adapter和Bridge模式理解和应用一 Adapter模式意图: 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作。适用性:使用一个已存在的类,而它的接口不符合你的要求;你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口,而是使用对象适配器适配他们的父类接口;你想创建一个可以复用的类,该类可以与其他不相关的类或者不可预见的类(接口可能不一定兼容的类)协同工作;看看其结构图: 这是一个对象适配器结构图; 其实类似这样的类结构图(一个类包含了另一个类的实例并使用... 阅读全文
posted @ 2012-05-23 17:46 __Shadow 阅读(4526) 评论(1) 推荐(0) 编辑
摘要:一 Composite模式将对象组合成树形结构以表示“部分——整体”的层次结构。Composite使得用户对单个对象操作和组合对象的操作使用具有一致性。 这里面涉及到单个对象和组合对象的操作问题。 将单个对象和组合对象一致的对待能使:客户代码一致简单,使用更加灵活多变,便于扩展新的组合对象,便于对象的管理等。 统一对待单个对象和组合对象,势必要提供一些组合对象需要而单个对象不需要的操作或者属性等管理手段,这些手段对与单个对象或许根本不存在或者不适用,这样势必存在着一定风险隐患,造成不安全因素的存在。 但是单个对象和组合对象必然存在一些不同的地方,要将单个对象与组合对象一... 阅读全文
posted @ 2012-05-22 16:04 __Shadow 阅读(2642) 评论(0) 推荐(1) 编辑
摘要:Android中JNI的使用方法 首先看一下Android平台的框架图:(网上盗用) 可以看到Android上层的Application和ApplicationFramework都是使用Java编写,底层包括系统和使用众多的LIiraries都是C/C++编写的。 所以上层Java要调用底层的C/C++函数库必须通过Java的JNI来实现。下面将学习Android是如何通过Jni来实现Java对C/C++函数的调用。以HelloWorld程序为例:第一步:使用Java编写HelloWorld 的Android应用程序:package com.lucyfyr;import andro... 阅读全文
posted @ 2012-05-19 15:24 __Shadow 阅读(158882) 评论(11) 推荐(9) 编辑
摘要:Linux下 JNI的使用 学习Android其中涉及对JNI的使用,对于这种跨语言的调用真没有见过,Java也都是最近才学的更别说对JNI的了解了,JNI的使用对于Android来说又是十分的重要和关键。那么到底Java到底是如何调用C/C++的,通过网络达人的总结中学习,自己也顺便总结一下这个学习的过程。什么是JNI JNI是Java native interface的简写,可以译作Java原生接口。Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序无疑是一个福音。JNI是Java与C/C++交互的接口。 使用JNI也是有代价。大家都知道JAVA程序是运行在 阅读全文
posted @ 2012-05-17 21:55 __Shadow 阅读(25106) 评论(2) 推荐(2) 编辑
摘要:Activity中UI框架基本概念 Activity 是应用程序的基本组成部分,提供了可视的界面,与用户进行交互;具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的。一Activity相关概念Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建;View:最基本的UI组件,表示屏幕上的一个矩形区域;DecorView:是Window中View的RootView,设置窗口属性;Window:表示顶层窗口,管理界面的显示和事件的响应;每个Activity 均... 阅读全文
posted @ 2012-04-10 14:48 __Shadow 阅读(11457) 评论(0) 推荐(1) 编辑
摘要:PolicyManager工厂模式与动态加载 Android FrameWork——PolicyManager在学习Android跟踪setContentView执行过程代码的时遇到:Attach(){ //着实不清楚PolicyManager到底如何创建的,哪一个对象。 mWindow = PolicyManager.makeNewWindow(this);}其中用到Class.forName动态加载,Java是最近才学的还真不晓得有这样的用法;一 类之间关系于是就了解一下PolicyManager以及相关类实现方式;首先看一下各个类之间的UML图: PolicyManager:提... 阅读全文
posted @ 2012-04-09 14:56 __Shadow 阅读(5127) 评论(1) 推荐(1) 编辑
摘要:Android Activity学习笔记——Activity的启动和创建 最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函数基本上没有任何意义的;于是想深入了解一下Activity到底是怎么一回事怎么运行来的;里面的东东真是叫个庞大;现在只能简单的了解其框架性的概念和流程;一 Activity概念 Android的核心不是Application而是Activity,至少在我们开发的时候是这样的; Activity就是被用来进行与用户交互和用来与android内部特性交互的组件,在应用程序中用到的所有activity都需要在manifest.xml文件中进行注册;... 阅读全文
posted @ 2012-04-07 17:01 __Shadow 阅读(33577) 评论(9) 推荐(8) 编辑
摘要:接上一篇:Mms模块ConversationList流程分析(1)三 联系人数据的查询 前面使用AsyncQueryHandler所获取到的cursor仅仅是查询了,所有对话信息数据;但是其中的联系人仅仅只是保存了其ID:recipientIds; 还需要根据此recipientIds获取其联系人的信息;这个就是在包装信息数据给ListItem使用的时候获取的;Conversation conv = Conversation.from(context, cursor);获取联系人相关信息;下面看下这个过程: 先从Conversation中的Cache中查找是否当前cursor所对应的Th... 阅读全文
posted @ 2012-04-01 17:23 __Shadow 阅读(2603) 评论(0) 推荐(0) 编辑
摘要:Android的Application理解一 概述 在之前所使用的的框架:VC的MFC,MTK平台开发;这两个平台相似之处是:基于Application开发;MFC是基于Application的Document/View的方式,每个Application就是一个进程;MTK是基于Application的Screen/Page,Service的方式,每个Application都有自己的内存和管理方式;这两种方式的核心是:Application;在Android开发学习中从HelloWord开始,我没有能够见到Application的相关代码,而是以Activity为入口; 让我... 阅读全文
posted @ 2012-04-01 15:52 __Shadow 阅读(8343) 评论(1) 推荐(0) 编辑
摘要:一 adb常用的几个命令1. 查看设备adb devices这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示2. 安装软件 卸载软件adb install <apk文件路径>adb uninstall <软件名>4. 登录设备shelladb shelladb shell <command命令>这个命令将登录设备的shell.后面加<command命令>将是直接运行设备命令, 相当于执行远程命令5. 从电脑上发送文件到设备adb push <本地路径> <远程路径>用push命令可以把 阅读全文
posted @ 2012-03-31 20:53 __Shadow 阅读(48567) 评论(5) 推荐(2) 编辑