国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

實(shí)例講解Android多線程應(yīng)用開(kāi)發(fā)中Handler的使用

2020-04-11 10:52:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

其實(shí)可以理解Handler為主線程和另外的線程之間進(jìn)行數(shù)據(jù)更新的東東,并且Handler在主線程中,并在Handler直接調(diào)用線程的run方法

package com.Handler02;  import android.app.Activity; import android.os.Bundle; import android.os.Handler;  public class Handler02Activity extends Activity {   /** Called when the activity is first created. */   private Handler handler=new Handler();   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     handler.post(thread1);     setContentView(R.layout.main);         System.out.println("================Main==============="+Thread.currentThread().getId());     System.out.println("============Main========="+Thread.currentThread().getName());   }   Runnable thread1=new Runnable() {          @Override     public void run() {       System.out.println("======thread1==============="+Thread.currentThread().getId());       System.out.println("========thread1============"+Thread.currentThread().getName());       try {         Thread.sleep(10000);       } catch (Exception e) {         // TODO: handle exception       }            }   }; } 

結(jié)果是主線程等待10s后才顯示出來(lái),并且線程ID

package com.Handler4;  import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.TextView;  public class Handler4Activity extends Activity {   /** Called when the activity is first created. */   private TextView textView;   private MyHandler myHandler=new MyHandler();   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     textView=(TextView)this.findViewById(R.id.textView1);   }   class MyHandler extends Handler{     //從消息隊(duì)列中取出并handleMessage處理消息     @Override     public void handleMessage(Message msg) {       textView.setText((String)msg.obj);     }   }   public void download(View view){     Thread thread=new Thread(new Runnable() {              @Override       public void run() {         try {           String s="zhangzhao";           Thread.sleep(5000);           //數(shù)據(jù)發(fā)送出來(lái)           //textView.setText(s);           Message message=Message.obtain();//最好不要new,這個(gè)obtain會(huì)節(jié)省資源           message.obj=s;           myHandler.sendMessage(message);//沒(méi)有指定looper那么就會(huì)發(fā)送給主線程中的looper                    } catch (InterruptedException e) {           // TODO Auto-generated catch block           e.printStackTrace();         }                }            });     thread.start();//會(huì)出錯(cuò)原因是在非UI線程里面直接操作UI     //主線程維護(hù)了一個(gè)消息對(duì)列,當(dāng)其他的線程有數(shù)據(jù)需要傳遞給主線程的時(shí)候,你就把數(shù)據(jù)封裝成一個(gè)Message對(duì)象,然后放在主線程的     //消息隊(duì)列中去,對(duì)應(yīng)消息的處理由Looper,子線程通過(guò)Handler把下載完的數(shù)據(jù)封裝到Message里面,然后把消息取出來(lái)交給Handler進(jìn)行處理     //通過(guò)Handle和Message實(shí)現(xiàn)兩個(gè)線程之間達(dá)到共享數(shù)據(jù)   } } 
package com.Handler5;  import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView;  public class Handler5Activity extends Activity {   /** Called when the activity is first created. */   private ProgressBar progressBar;   private Button button;   private TextView textView;   private MyHandler myHandler=new MyHandler();   int i=0;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);        setContentView(R.layout.main);     progressBar = (ProgressBar)this.findViewById(R.id.progressBar1);     textView=(TextView)this.findViewById(R.id.textView1);   }   class MyHandler extends Handler{     @Override     public void handleMessage(Message msg) {       int pos =(Integer)msg.obj;       progressBar.setProgress(pos);       textView.setText(pos+"%");            }   }   public void downLoad(View view){           new Thread(new Runnable() {              @Override       public void run() {         while(i<=100){           try {             Thread.sleep(300);             i+=10;             Message message=Message.obtain();             message.obj=i;             myHandler.sendMessage(message);           } catch (InterruptedException e) {             // TODO Auto-generated catch block             e.printStackTrace();           }                  }                }     }).start();   } } 

效果:

2016131175347004.jpg (283×189)

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 饶阳县| 洛浦县| 湛江市| 胶州市| 咸阳市| 射洪县| 上犹县| 邵武市| 青河县| 左贡县| 芒康县| 房产| 新巴尔虎右旗| 通化县| 梁河县| 集安市| 大埔区| 甘德县| 江孜县| 宁都县| 河东区| 天柱县| 东丰县| 宜阳县| 姜堰市| 旬邑县| 金溪县| 阳城县| 岗巴县| 社会| 武胜县| 嘉义县| 靖江市| 仪征市| 通州市| 石家庄市| 象州县| 灯塔市| 昌图县| 泗阳县| 蕲春县|