四大组件
Android中的四大组件是构成App的重要元素。其中四大组件分别为Activity,Service,Broadcast,Content Provider。App之间的交互也是以组件的形式存在的。
简略地介绍下这四大组件,Activity主要是负责视图展示这一部分,我们在App中经常见到的界面切换,都是App的Activity在切换。Activity有着自己的生命周期,从被创建到被销毁,感兴趣的童鞋可以自己看一下相关的资料。Service则正好相反,它总是在后台默默地做着自己的工作,从来没有自己的界面。Broadcast主要是负责一些全局事件消息的发送和接受,比如网络打开或关闭。每个App都可以自己发送广播,对这条广播感兴趣的App可以根据该广播来进行相应的操作。Content Provider是用于App之间数据访问的组件。比如说,很多应用如微博都会访问你的联系人数据,而联系人数据是属于联系人应用的,如果微博直接访问联系人应用的数据,这是一件非常不安全的事情。因此,联系人应用会对所有的外部应用开放一个数据访问的接口(即URI),外部应用通过这个接口间接地访问联系人应用的数据。这样就极大地提升了应用的数据安全性。
App的入口可以有多个。比如微信应用,我们可以通过点击微信的icon来打开微信,另外,当我们在相册应用中也可以通过微信分享来进入微信的一个Activity,在京东买商品的时候也在支付时进入微信支付的Activity,等等。
组件间通信
每个组件都有着自己的进程,而安卓的每个进程之间不可以直接通信,需要通过操作系统。前面介绍过安卓四大组件,那么问题来了,组件之间如何通信呢?答案是通过Intent对象。Intent对象可以携带很多的信息,包括action,data,category,flag,extra,component name等。
举个栗子,比如说,我们在一个Activity中点击一个按钮,进入另一个Activity。这个过程也是通过Intent对象来实现的,如果这两个Activity是属于一个App,而且程序编写者对两个Activity的名字都清楚,那么可以在Intent中直接设置Activity的ClassName(即Component Name),然后实现Activity的切换,这就是所谓的显示调用。但是如果这两个Activity属于不同的App,或则这两个Activity是由同一个App的不同的开发团队开发的,相互之间并不清楚具体的ClassName,那么可以通过第二种方式来调用,即隐式调用。
App之间的组件调用,调用方(发送方)的Intent对象被Android系统接收,Android系统扫描所有App的Manifest.xml文件,同Intent对象中的信息来进行对比,然后筛选出备选的App来接收Intent对象。如果筛选出的App不止一个,怎么处理呢?当然是由用户来选择喽。比如,当我们在文件浏览器中打开一个pdf文件的时候,会弹出一个备选的应用列表,比如阅读器,浏览器,wps等等。
序列化
java中如果要在不同的上下文间进行对象数据传输,需要进行对象的序列化/反序列化,当然,接收方需要知道这个对象的规则和结构。同样,在intent中的extras中传递对象数据也是通过这种方法。
Manifest.xml文件
再来讲讲Android中的Manifest.xml
Manifest.xml文件的作用,主要是注册组件,申请应用所需要的权限,制定应用的图标,版本号等等。
adb工具
adb工具可以让开发者通过linux命令来操作Android系统中的数据(需要root权限)。adb桥接器和模拟器(或者手机设备)都有各自的adb device demon,通过demon之间进行通信。
lint工具
程序代码和lint.xml通过lint工具来进行代码的检查,检查的内容包括正确性,安全性,性能,安全性等等。
原型分类
水平型原型和垂直原型
水平型原型侧重于需求验证,基本只有UI交互,但是会设计出整个系统的全貌,垂直原型侧重于技术验证,不需要实现整个系统的功能,而是要针对某一具体的功能实现具体的业务逻辑。
后记
写得有点乱啊,凑活看,回头再整理一下。