2013年4月1日 星期一

[Android]Thread與Handler的應用之章

Survey:

第三十四讲:Android Timer计时器 - 火箭發射為例




http://blog.csdn.net/mylzc/article/details/6736988 转载系列:
Android异步处理系列文章索引Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理


Android觀念篇:
1.Android的thread跟Java的thread大同小異,不同的是 Java是從public static void main(String args[]){
}作為一個程式的開頭再去呼叫其他method跟class
Android呼叫class 跟 method間交互應用也是相同,唯一不同的是
Android有四大元件Activity , Service , BroadcastReceiver , Content Provider等
各種元件有各自對應的生命週期,所以情境應用上比Java複雜多了
又舉例來說 Android會用handler來作為UI更新

2.在Android中只要執行會超過5秒的程序,就需要使用thread / handler來處理

3.Thread 裡是無法做任何有關介面的事,所以我們必須倚賴 Handler,可以把它想成介面與執行緒之間的經紀人

在Android運用到執行序中會有兩種情況

一種是

一次性

Thread thread=new Thread(new Runnable()
{
    @Override
    public void run()
   {
            
   }
});
thread.start();//開始執行緒

//想暫停的時候
thread.sleep(3000);//毫秒的意思  3000就是3秒 以此類推
 
//最後不用時
thread.stop();//停止執行緒


常駐性

//new一個執行緒,progressBar每秒增加5 ,到100%時停止
 
Thread mThread = new Thread(new Runnable() {
 
public void run() {
      Message message;
      String obj="run";
 
      for(int i=0 ; i < 20; i++){
      try{
        threadCount = (i + 1) * 5;
        Thread.sleep(500);
        progressBar.setProgress(threadCount);
        message = handler.obtainMessage(1,obj);
        handler.sendMessage(message);
     }catch (Exception e) {
        e.printStackTrace();
     }
}
 
 
}
});
 
mThread.start();
  
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
        super.handleMessage(msg);
        String MsgString = (String)msg.obj;
        if (MsgString.equals("run"))
        {
                    //do something
                    if(threadCount>=100){
                      Toast.makeText(OrderActivity.this,"下載完成!!!!",Toast.LENGTH_SHORT).show();
                      textView.setText("100%");
                    }else{
                      textView.setText(threadCount+"%....");
                    }
 
         }
 
}
};

Android實務篇:

沒有留言:

張貼留言