Android系统的异步处理机制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android系统的异步处理机制
作者:王洪伟吕亚娟
来源:《消费电子》2012年第07期
摘要:使用Android系统的AsynTask异步处理机制,可以很好地解决在移动应用中,由于带宽有限和数据量爆增所带来的问题,极大的提高了应用的可操作性,丰富了用户的使用体验。

关键词:Android;异步机制;移动投票
中图分类号:TP391 文献标识码:A 文章编号:1674-7712 (2012) 06-0093-01
在省级项目《吉林地区大学生网络应用状况的研究与对策》的调研过程中,发现在大学生中,智能手机的应用已经相当普遍。

智能手机以其功能强大丰富和小巧易携等优点,已经超越了简单通讯工具的范畴,很多学生通过智能手机进行沟通交流、学习和娱乐,智能手机已经成为广大学生的不可或缺的贴身伴侣。

在对学生的网络应用状况进行调查的时候,项目组认识到通过手机进行调查,将能够更加方便的让学生进行投票,也能够更加容易的获得调查结果,因此项目组决定尝试开发基于Android智能手机的移动投票系统,作为最新的数据统计渠道。

Android系统的市场占有率达70%以上,在大学生中更是首选,基于Android系统的移动投票系统,基本可以覆盖大部分的学生。

为了避免因为移动网络带宽有限,而导致大量学生同时投票时,出现网络访问不畅、无法投票和无法实时查看投票结果的情况,应在投票系统中采用异步处理机制,以保证投票的实时性和准确性。

在Android中提供了专门的AsynTask类进行异步处理,Asyntask机制简单易用,它将所有的线程通信都封装成回调函数,调用逻辑清晰,尤其是在异步处理结束之后,有回调函数进行收尾处理,方便进行结果的统计和输出。

本文将通过实例对Android系统的AsynTask类的一部处理机制进行深入分析,以便更好的应用于移动投票系统。

一、AsynTask类的结构
AsynTask类直接继承自ng.object类,主要用到的几个内部回调函数有:doInBackGround()、onPreExecute()、onPostExecute()和onProgressUpdate(),正是这几个回调函数构成了AsynTask类的使用逻辑结构。

二、回调逻辑关系
1.主线程调用AsynTask子类实例的execute()方法后,首先会调用onPreExecute()方法。

2.之后启动新线程,调用doInBackground()方法,进行异步数据处理。

3.处理完毕之后异步线程结束,在主线程中调用onPostExecute()方法。

三、各个函数间数据的传递
其数据传递关系如下:
由execute()方法向doInBackground()传递,doInBackground()方法的返回值会传递给onPostExecute()方法。

publishProgress()方法向progressUpdate()方法传递。

传递的数据的类型应该为数组,数组都是可变长的,应根据具体情况使用。

四、AsynTask机制的java实现代码
public class AnsyTestActivity extends Activity {
TextView text =null;
Button button=null;
String str=null;
AnsyTry anys=null;
double result=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.main);
text=(TextView) findViewById(R.id.text);
button=(Button) findViewById(R.id.button);
str="wei";
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
anys=new AnsyTry(text);
anys.execute(str); } }); }
class AnsyTry extends AsyncTask{
TextView te=null;
public AnsyTry(TextView te) {
super();
this.te = te; }
@Override
protected Double doInBackground(String... params) {
double dou=0;
if(params[0].equals("wei")){
System.out.println(Thread.currentThread().getName()+"recive wei");
dou=100; }
publishProgress(te);
return dou; } }}
通过AsynTask异步机制的应用,移动投票系统在应用中表现良好。

在接受学生集中投票和实时统计分析的数据高峰期,AsynTask异步机制很好的将投票和查看统计结果的功能,分配给不同的线程,从而避免了网络堵塞情况的发生,保证了投票数据的及时性和准确性。

参考文献
[1]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社。

相关文档
最新文档