田兴强
摘要:近几年,智能手机发展迅猛,Android系统在市场份额中越来越高,这意味着Android系统拥有广阔的市场,但并不意识着各大手机厂商对Android系统的依赖性就很高,只有更好的、更稳定的系统软件才能引起消费者的青睐,因此,各大软件厂商必须对Android若干技术进入深入的研究,才能在智能手机领域占据更高的比率。该文主要分析Android自定义控件开发技术及应用程序的多线程技术。
关键词:Android若干关键技术;应用系统;研究及开发
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)31-0077-02
智能手机的快速普与其身的发展息息相关,如硬件技术的成熟、成本的降低以及计算对能力的智能化。当前,随着无线网络技术的发展与成熟,4G无线网络的覆盖面积逐渐扩大,智能手机作为无线网络的终端设备,两者相互依存、共同发展。智能手机在各项技术与无线网络的双向基础之下得到巨大推力,它的出现顺应社会发展的需求。根据2012至2013年谷歌公司公布对中国人民使用智能手机的调研数据显示:智能手机在中国的使用率高达33%, 其中43%的随身携带手机,54%专注于手机电视,64%用户平均每天都需要通过智能手机上网。另外,根据CNNIC2013年9月的《中国移动互联网发展状况调查报告显示》,在2012年12月至2013年5月,中国手机用户高达3.67亿,其中智能手机用户高达1.98亿,占手机总用户的53.9%。从上述数据中可明确看出,智能才机已深入人们的日常生活,是人们生产、生活中的重要组成部分。
1 Android关键技术的分析研究
1.1 自定义控件开发技术
继承view或view Group或它们的子类是实现自定义view的本质。具体继承的哪一控件要看具体需求或自定义的粒度。自定义视图在实现过程要通过onMeasure、onLayout、onDraw等方法。
自定义控件可分为四种类型:其一,view自定义,widget的绘制需要继承基类view,对一些控件类型可进行选择性的定制,如事件响应、onMeasure视图测量、onDraw绘制等。二,继承button、textview、editText、ListView、Gellery、Spinner等现有控件widget,这种继承方式较常见,Android技术研究者通常扩展某个widget的功能,在原有控件的基础上新增部分新功能,对measure,draw不会做出太大的改变或改变较少,因此,技术研究者可在原有功能的基础上免费继承或对部分函数重载。其三。全新layout布局,其中viewgroup,的方式较少,因Android几种预制布局已涵盖大部分布局。其四,继承layout,如Framelayout、[relativelayout、LinearLayout、]等。这些方式用于实现组合式控件,通常是多处控件放在layout中,因此,这种方式的继承必然会在某个layout类,layout类型继承必须通过组合控件的布局进行确定。
2 应用程序开发分析
2.1 多线程技术
以往java要实现多线程必须通过Thread,Runnable等,要实现Runnable接口,需要通过Runnable为参数构建一个Thread对象,另外还可直接实现Thread子类,并重写run,再构建Thread对象,但对象构建完成之后线程并不能启动,需借助于hread.start函数方可启动。但这两种方式具有一定的缺陷,一是工作线程的交互细节与UI线程没有完全封装好,可能会导致工作线程耗时操作且在此过程中直接更新UI,此操作在Android不允许出现,UI更新必须在Android的UI线程中完成。二是UI线程交互接口与工作线程交互接口有限,只有通过View.postDelayed(Runnable,long)、Activity.run OnUi Thread(Runnable)、View.post(Runnable)等函数进行交互,但在交互的过程中函数的使用会显得力不从心。
在Android官方自行研究出一种异步任务的方式,这是一种较常见的方式,该方式对UI线程与工作线程有良好的封装,若出现耗时操作会将此放大式作线程中执行,UI线程根据工作线程的执行结果更新UI。继承Async Task抽象类是实现异步任务的基础,抽象类将主线程交互与线程管理的细节进行封装,只提供下列几个回调方法:
[doInBackground,onPreExecute,onPostExecute,onProgressUpdate,onCancelledt],它五个函数的线程及函数的交互顺序通过图1所示。doInBackground会通过Async Task进入工作程序线程中执行,另外4个函数会在UI线种程执行。其中唯独doInBackground是抽象的,其余4个不是。
图1 Async Task实现工作线程与UI线程交互
2.2 线程消息处理的原理
当Android程序启动时,Android系统会为该启动的程序创建一个main线程,主要是对activity、broadcast receiver等顶层应用组件的管理或处理UI相关事件,比如手机用户的按键、屏幕绘图、接触屏幕等事件。Android作为单线程模型,组件通过运行在在main线程中,因此,程序在下载文件、网络抓图、数据库操作会因耗时操作而使UI线程发生阻塞,并出现application not response程序无响应,因此,出现耗时的操作就必须通过多线程处理。在Android单线程模型中具有两条规则:其一,UI线程必须保持通畅,其二,UI线程外的UI操作不能使用UI工具进行。前者规定将耗时操作不能在本工作线程内进行,只有将其放入另外的工作线程,后者规定是UI操作不能在工作线程内进行,只有将其放入UI线程内进行。这两点规定是Android多线程编写必须避免的操作。
3 结束语
随着智能手机的快速发展,人们对智能手机的消费越来越多。智能手机为人民提供了很大的便利性,人们通过智能手机可以平板电脑一样操作程序,如下载音乐、电影、网页冲浪、WIFI功能以及手机地图等。智能手机的发展为硬件设备以及软件设备带来广阔的发展空间,其中Android是最为典型的手机系统软件,其系统强大的开放性、用户体验及可移植性,获得广大用户的认可,并引领在智能手机领域中。本文主要分析自定义控件开发技术与多线程技术,在Android技术的开发中,Android具有更多的技术与应用程序,需要更多的软件开发商进行仔细的开发与研究。本文只列举了少个技术并进行分析。Android技术会越来越多的应用在智能手机领域中,它的市场前景与用户占有率会越来越高,它的技术会越来越成熟。
参考文献:
[1] 邹丽丽. Android若干关键技术研究与应用系统开发[D]. 杭州: 浙江大学, 2013.
[2] 张瑞卿. 基于Android手机客户端的中央空调远程数据监控系统研究[D]. 厦门: 厦门大学,2014.
[3] 安晓飞. 一种基于Android的移动GIS技术实现与应用研究[D]. 上海: 华东师范大学, 2013.
[4] 蒋清红. 基于Android平台的快递派发最优路线引导系统的设计与实现[D]. 桂林: 广西师范大学,2014.
[5] 阙斌生. 面向Android应用程序行为的安全监控系统设计与实现[D]. 北京; 北京邮电大学, 2014.
[6] 苏铭君. 基于ARM11的Android系统移植及其温度传感器程序设计[D]. 沈阳: 沈阳工业大学, 2013.
[7] 李铮山. 基于Android平台的应用程序安全监控与评估系统的设计与实现[D]. 北京: 北京邮电大学, 2013.