APP下载

多线程技术在Android手机开发中的运用

2018-01-17谢光刘志惠

电子技术与软件工程 2017年24期
关键词:线程进程

谢光+刘志惠

摘 要

在Android手机开发过程中,一般情况下程序是通过一个线程进行工作的,因此当一个任务耗费过长时间,就会造成主程序无响应并对程序运行的顺畅程度造成影响的问题。基于此,本文通过对多线程组成进行介绍,在Android中多线程技术模块与具体实现方式两方面对多线程技术在安卓手机开发中的运用进行探讨,以为关注此问题的人们提供参考。

【关键词】多线程技术 Android手机 进程 线程

安卓系统自2007年由谷歌公司开发后,得到了巨大的发展。截至2017年3月,其市场占有率已经达到86.4%,如三星、索尼爱立信、小米、OPPO等手机生产厂商都在使用安卓系统。该系统开源免费、执行效率高,其多线程技术开发应用的研究,对提高手机硬件的利用效率,给用户带来良好试用体验,提高手机厂商的企业竞争力有重要作用。

1 多线程介绍

1.1 进程和线程介绍

一般来说,在一定时间内实现多个程序任务执行的程序都会用到“进程”这一概念。进程,即:一个拥有自身独立的内存空间、系统资源的执行程序,其特征为实现内部状态和内部数据的相互独立。线程与进程相似,线程也是一段有一定功能代码组成的流控制。线程的特征为:同类的多个线程可以对内存空间与系统资源进行共享。因此在对资源的占用方面,可以相互切换的线程比进程小很多。一个进程中可以包含诸多线程,此外,主线程对子线程有控制作用,可对子线程启动、停止等动作进行管理。而本文要重点介绍的多线程,指的是单个程序中一起运行的不同线程,不同线程可以执行不一样的任务。其特征是一个程序的多行语句可在某时间同时执行。

1.2 多线程程序消息处理原理

当人们启动一个程序时,系统将建立main线程,主要管理如:activity等应用组件,并对UI相关的事件进行处理,比如用户想要按键或使用屏幕进行绘图,线程会对以上事件进行处理,这是UI线程。安卓的线程模型,所有组件均在main线程中,因此用户在程序中下达下载文件、使用数据库等具有高耗时特征的操作时,就会造成UI线程的运行不畅,并出现程序无法响应的问题。这就要求程序员使用多线程技术,在进行安卓多线程编写时,技术人员应注意以下两点:

(1)UI线程不能被阻塞。

(2)只可以在UI线程的内部进行UI操作并使用工具包。

线程核心方法的实现通常用run方法,程序员将run方法中放入程序需要处理的事件,在线程被启动时,通过调用run方法实现程序的执行。

2 多线程技术在Android手机开发中的运用

2.1 Android开发中多线程结构模块

在判定一个系统是否成熟时,技术人员要关注一下几点:运行的速度是否快速,响应速度的快慢,安全性能的强弱等等。多线程的应用,可以在较大程度上提高安卓系统的运行与相应速度。安卓的多线程结构模块包含以下几个方面:用于活动的结构模块,此模块主要是通过视图来显示包含信息现实和用户动作的反应的图形界面。二是用于服务的结构模块,此部分在进行工作时,主要在程序后台,在触发事件时可通知程序进行数据的更新。三是内容、数据的提供部分,此板块可以通过数据的管理,实现数据的共同使用,是一个大体积的数据存储板块。四是,此模块通过程序的协调功能,对目标活动提供所需要的信息,且具有意图说明的功用。

在所有的程序模块中,用于活动的结构模块是需要直接同用户进行交互的,这种功能主要是通过用户界面得以实现,用户界面通过展示程序运行情况实现与用户的直接交流。若安卓的使用程序中,由于单线程的使用造成程序无法响应、程序运行速度过慢的问题,工作人员需要把应用程序加载到新的线程中,以实现刷新主线的活动界面内容,实现对整个活动界面的刷新。具体来说,用户在下载文件时,若文件体积过大需要较多的下载时间,那么程序需要经此任务调离主线程,并迅速开启新的线程完成下载。即:用户先是打开了主界面,然后输入网址,在此之后系统就开始对文件下载,为保证系统运行速度,程序开启一些子线程进行下载工作,如下载完成,子线程也可以对主线程进行消息报告,主线程在得到报告后,会再次刷新页面。

2.2 安卓开发中的多线程实现方式

安卓开发中技术人员可以用两种方法实现多线程:

一是对线程类Thread进行继承,二是实现Runnable接口。如要使用方式一,程序员可使用以下方式进行编程:(1)对类Thread进行继承并重写run()方法,技术人员在对类实例进行初始化时,可将目标设置为空(null),表示由本实例来进行对线程体的执行。由于Java只可以进行单重继承,因此如采用这种方法对类进行定义,就不可以继承其他的父类了。在main方法里,程序员可采用new textThread()进行子线程的创建,并使用Thread.start()方法實现子线程的启动。即:存在main方法的线程是主线程,并有对其他线程管理的作用。而程序员在启动子线程后调用run()方法,run是一个线程体,子线程里面处理的事件都是在run()方法中实现的。需要注意的是:线程中stop()方法也可以完成线程的停止,但会锁死线程,因此不建议采用。

实现多线程的另一种方法,就是通过实现runnable接口,并提供一个类为线程的目标对象,在对线程进行构造时可以使用两个包含Runnable目标参数的建成方式,一是Thread(Runnable目标),二是Thread(Runnable目标,String name)。其中的“目标”就是线程目标对象。这是一个实现Runnable的类,在程序员对目标对象进行构造时,将目标对象给这个线程的实例进行传递,此时一方面目标对象可以为Thread类提供run()方法;另一方面可以通过继承其他父类的方式实现接口Runnable类。这种方法有一个转换方式,即:程序员不实现Runnable接口而是实例化Thread类时,对Runnable接口的内部类进行定义。

3 结论

综上所述,程序员通过使用多线程技术可以加快程序的相应与运行速度。通过分析可得,程序员使用main做主线程并调用run()方法,实现runnable接口等方式可以实现多线程技术。因此,程序员应采用以上办法在安卓手机开发中运用多线程技术。

参考文献

[1]闫伟,叶建栲.多线程技术在android手机开发中的应用[J].信息通信,2012(01):46-47.

[2]李鑫,廖正赟.多线程技术在Android手机开发中的运用[J].通讯世界,2016(10):105.

作者简介

谢光(1983-),男,山东省单县人,现供职于三亚学院,讲师、硕士学位。研究方向为数据库技术软件工程。

作者单位

三亚学院 海南省三亚市 572000endprint

猜你喜欢

线程进程
基于国产化环境的线程池模型研究与实现
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
浅谈linux多线程协作
线程池技术在B/S网络管理软件架构中的应用
我国高等教育改革进程与反思
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux僵死进程的产生与避免
Linux线程实现技术研究
男女平等进程中出现的新矛盾和新问题