android 多线程下载优点,解析Android中线程的好处

一、Android有两种方式处理线程:

比较耗时的操作放在后台服务,通过通知机制通知用户使用的活动(activity);在后台线程中处理耗时的操作

二、使用Handler

创建后台线程最友好的办法是创建一个Handler子类的实例。只需一个Handler对应一个Activity。自定义的后台线程可与Handler通信,Handler将与UI线程一起工作。和Handler通信,需要两个选项,message和runnable对象。

三、Message

发送Message到Handler,第一步调用obtainMessage(),从池中得到Message对象。

然后,可通过消息队列将Message发送给Handler,通过sendMessage…()方法族:

sendMessage() 立即发送Message到消息队列

sendMessageAtFrontOfQueue() 立即发送Message到队列,而且是放在队列的最前面

sendMessageAtTime() 设置时间,发送Message到队列

sendMessageDelayed() 在延时若干毫秒后,发送Message到队列

为了处理Message,Handler需要实现handleMessage(),当Message出现在队列中时,会调用handleMessage()方法。另外,Handler可在需要时更新UI。

以下示例演示一个进度条,每隔1秒钟增加1/20个单位。效果图:

5aa1ac426e5b88513dfe0f40dfbe928a.png

java代码:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:id="@+id/progress"

style="?android:attr/progressBarStyleHorizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

java代码:

package eoe.demo;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.ProgressBar;

public class ShowThread extends Activity {

ProgressBar bar;

Handlerhandler=newHandler() {

@Override

public void handleMessage(Message msg) {

bar.incrementProgressBy(5);

}

};

booleanisRunning=false;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

bar= (ProgressBar) findViewById(R.id.progress);

}

@Override

protected void onStart() {

super.onStart();

bar.setProgress(0);

Threadbackground=newThread(new Runnable() {

@Override

public void run() {

for (inti=0; i<20&& isRunning; i++) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

handler.sendMessage(handler.obtainMessage());

}

}

});

isRunning=true;

background.start();

}

@Override

protected void onStop() {

super.onStop();

isRunning=false;

}

}

小结:

当第一次启动一个android程序是,android会自动创建一个称为“main”主线程的线程。这个线程很重要,因为它负责吧时间分派到相应对控件,其中就包括屏幕绘图时间,它同样是用户与android控件交互的线程。

【编辑推荐】

【责任编辑:李程站 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值