浅谈Android应用开发中一些概念的理解

Android应用、Window应用和Web应用这3种应用是我们目前比较主流的应用程序开发类型,其实他们之间的设计思路有许多相同的地方,也有不同的地方。在各种技术之间相互借鉴,有助于我们理解Android应用开发模式的一些设计思路。下面我总结一下在Android应用开发中我对一些概念的理解。

1、开发Android应用程序时界面资源通过XML文件来定义,可以与Java源码分离,同时自动在R.java生成一个整形ID,在Java源码中可以通过这个ID来这个资源,使得对这些资源操控变得容易。在界面定义上3种应用比较类似,Window应用界面也有专门的资源文件,程序中可以引用修改,Web应用界面通过HTML来定义,然后在Javascript中可以对DOM树进行操作,对界面进行修改。

2、ContentProvider封装屏蔽了不同底层数据访问方式的差异,将自己通过AndroidManifest.xml注册到系统中,并提供统一的RESTful风格的URL,客户端通过这个URL来访问ContentProvider中的数据,访问的方式类似于数据库访问,使得应用程序之间的数据传递变得容易和统一。

3、Intent定义了在一个活动中调用另外一个活动的机制,先定义Intent来指定调用哪一个活动及携带的操作数据,然后用这个Intent与xml配置文件中活动所配置的Intent过滤器进行匹配,如果匹配上,就启动这个活动,调用服务和广播时也类似。

4、UI开发可以使用代码创建方式或XML定义方式,比较灵活,通常会用XML方式定义活动视图,然后用代码来给视图设置数据,设置数据的方式是定义适配器,然后再把适配器附加到视图上。

5、活动使用布局管理器来组织排布各个视图,很多UI系统都会使用类似布局管理器的东西来组织UI组件。

6、碎片实现对活动的分隔,类似于Windows应用程序里的框架窗口,可以在活动中划分出几个独立的区域,同时由于屏幕可以做横屏竖屏转换,所以碎片在活动中的布局要做不同处理。

7、因为移动设备支持返回按键,所以启动一个新的活动或碎片时,旧的活动或者碎片要保存在一个返回栈中,这样当从新活动或者碎片退出时,旧的活动或者碎片能够重新显示,这种需求对于桌面应用程序是不存在的,可能类似于浏览器实现Web页面跳转的后退机制。

8、应用需要签名和4字节对齐后才能安装到手机上,这样能够避免他人用其它应用来升级你的应用;活动可以设定访问公共组件的权限,或者设定自己能被其他活动访问所需要的权限,没有权限的访问会导致错误,活动也可以通过ContentProvider把访问权限传递给另一个活动。安全性的保护算是Android应用的一个特点,Windows应用和Web应用没有定义这样安全机制。

9、AsyncTask在主线程提交任务到后台线程池执行,同时在主线程创建一个Handler,任务在后台执行时,可以通过向主线程的Handler发消息,Handler监听到消息后触发一些回调函数在主线程执行,从而实现任务处理过程中对界面的更新。

10、本地服务只可以被同一应用程序调用,而AIDL服务可以被另外的应用程序调用,并且可以通过Pracelable在客户端和AIDL服务之间传递复杂数据,服务通常运行在主线程上,它不会自动创建子线程,需要运行超过5s的任务需要手动创建子线程来执行。

11、一个包通常是一个应用程序,两个包使用相同的用户id时可以互相访问对方的数据。可以建立专门的库项目,然后被其他的项目所包含。

12、处理程序通过放置一个消息到应用程序主线程队列中,后续队列处理这个消息时,能够回调执行相应的处理程序。

13、工作线程在主线程创建一个Handler,然后把Handler传给工作线程,工作线程执行时给Hanlder发消息,Handler监听到消息后再执行相应的处理。它与AsyncTask的区别是AsyncTask是封装好的线程池,比起工作线程的方式,AsyncTask在操作主线程上更方便,因为onPreExecute()、onPostExecute()及更新主线程方法onProgressUpdate()均运行在主线程中,这样就不用给Handler发消息处理了。

14、广播接收程序通过AndroidManifest.xml将自身注册到到系统中后(也可通过程序注册到系统中),就可以接受并处理客户端进程发送的广播消息,它可以运行在客户端进程内或者进程外的独立进程。

15、通知是先设置内容视图,再定义一个Intent,然后调用通知管理器,把通知发送出去,当用户点击通知时,会触发调用之前定义的Intent。

16、要长时间运行广播接收程序,需要启动一个服务,然后由服务启动一个线程,通过给这个线程发送消息,来驱动线程处理需要长时间运行的任务。

17、主屏幕部件类似于Windows系统上的快捷方式,但不同的是还可以定期更新一些显示数据,是一种与底层数据完全分离的远程视图。它是一个Android应用程序,通过定义一个部件接收程序以及相关联的配置视图,当部件接收程序第一次启动时会调用相应的配置视图,配置视图取得用户输入信息后更新部件视图,后续当部件接收程序被系统定期更新时,会取得相应的更新数据并更新部件视图,从而达到定期更新显示数据的效果。

(完)

浅谈Android应用开发中一些概念的理解,布布扣,bubuko.com

浅谈Android应用开发中一些概念的理解

上一篇:使用Android的AsyncTask


下一篇:android-UI组件(三):ImageView及其子类