android 使用多线程控制进度条

来源:互联网 发布:c语言编写程序的软件 编辑:程序博客网 时间:2024/05/22 00:06

要使用Thread.start() 方法才能真正创建新的多线程,单纯地使用Handler是实现不了的,Handler和Activity用的是同一个线程


package lujianfei.activity12;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class Activity12 extends Activity {private ProgressBar firstBar = null;private Button myButton = null;myThread thread= new myThread();    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        firstBar = (ProgressBar)findViewById(R.id.Progressbar1);        myButton = (Button)findViewById(R.id.button1);        Log.d("MainThread","id:"+Thread.currentThread().getId()+" name:"+Thread.currentThread().getName());        //这里运行的是Main线程        myButton.setOnClickListener(new ProgressBarOnClickListener());     }    class ProgressBarOnClickListener implements OnClickListener{public void onClick(View v) {// TODO Auto-generated method stubthread.start();}        }    class myThread extends Thread{        public boolean flag=false;@Overridepublic void run() {// TODO Auto-generated method stubint i=0;while(!flag){Log.d("updateThread","id:"+Thread.currentThread().getId()+" name:"+Thread.currentThread().getName());//这里运行的是新的线程i+=10;Message msg = new Message();msg.arg1=i;updateBarHandler.sendMessage(msg);try{Thread.sleep(1000);}catch(InterruptedException ex){ex.printStackTrace();}} }        }                     Handler updateBarHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubLog.d("handleMessage","id:"+Thread.currentThread().getId()+" name:"+Thread.currentThread().getName());//这里运行的是Main线程        if(msg.arg1>firstBar.getMax())        {        thread.flag=true;        }        else        {    firstBar.setProgress(msg.arg1);        }    //updateBarHandler.post(updateThread);     super.handleMessage(msg);}        };    }


原创粉丝点击