一、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个单位。效果图:
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;
 - Handler handler = new Handler() {
 - @Override
 - public void handleMessage(Message msg) {
 - bar.incrementProgressBy(5);
 - }
 - };
 - boolean isRunning = 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);
 - Thread background = new Thread(new Runnable() {
 - @Override
 - public void run() {
 - for (int i = 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控件交互的线程。
【编辑推荐】
Android 计时器Timer用法
Android智能手机操作系统
常用的Android指令和模拟器参数
用C#实现HTTP协议下的多线程文件传输
SQL点滴之收集SQL Server线程等待信息