Android学习笔记 - 线程篇

1.Handler的基本概念
 用于处理一些耗时较长的动作,与线程相似

 

2.Handler基本使用方法

[java] view plain copy
  1. //声明一个Handler对象  
  2. Handler handler = new Handler();  
  3.   
  4. //创建一个线程方法  
  5. Runnable updateThread = new Runable(){  
  6.     @Overrid  
  7.     public void run(){  
  8.         handler.postDelayed(updateThread,3000); //休眠3秒加入队列  
  9.     }  
  10. }  
  11.   
  12. //启动此线程方法  
  13. handler.post(updateThread);  
  14.   
  15. //停止此线程方法  
  16. handler.removeCallbacks(updateThread);  

 

3.使用Handler更新ProgressBar

[java] view plain copy
  1. // 声明Handler对象  
  2. Handler handler = new Handler() {  
  3.     @Override  
  4.     public void handleMessage(Message msg) { // 重写handleMessage方法,用于接收消息  
  5.         pbar.setProgress(state); // 修改进度条进度  
  6.         handler.postDelayed(runnable, 1000); // 延迟1秒再提交线程队列  
  7.     }  
  8. };  
  9.   
  10. // 线程执行方法  
  11. Runnable runnable = new Runnable() {  
  12.     public void run() {  
  13.         state += 10// 进度变量自增10  
  14.         if (state < pbar.getMax()) { // 如果状态<100  
  15.             Message msg = handler.obtainMessage(); // 取消息队列  
  16.             msg.arg1 = state; // 传递参数  
  17.             handler.sendMessage(msg); // 发送消息至队列  
  18.         } else { // 进度条已满情况  
  19.             btnStart.setEnabled(true); // 按钮恢复可用  
  20.             pbar.setVisibility(View.GONE); // 进度条隐藏  
  21.             lblMsg.setVisibility(View.VISIBLE); // 消息框显示  
  22.             lblMsg.setText("进度完成,线程结束!"); // 消息框显示内容  
  23.             handler.removeCallbacks(runnable); // 移除线程队列方法  
  24.         }  
  25.     }  
  26. };  

 

4.Handler与线程
 Handler其实是与主线程是同一线程,而并不是分开的,因为是直接调用Run函数

 

5.JAVA标准方法的生成线程

[java] view plain copy
  1. Thread t = new Thread(r);  
  2. t.start();  
  3. Runnabel r = new Runnable(){  
  4.     @Override  
  5.     public void Run(){  
  6.         System.out.println("new thread print");  
  7.     }  
  8. }  

 

6.Bundle的用法
 Bundle可以理解成一个特殊类型的Map<String,Object>
 Bundle用于存在一些数据,用于在其它位置中使用

 

7.在新线程当中处理消息的方法

[java] view plain copy
  1. //生成一个HandlerThread对象,用于使用Looper来处理消息队列的功能  
  2.     HandlerThread t = new HandlerThread("tName");  
  3.     t.start(); //启动  
  4.       
  5.     MyHandler h = new MyHandler(t.getLooper());  
  6.       
  7.     Bundle b = new Bundle(); //传递消息  
  8.     b.putInt("age"30);  
  9.     b.putString("name""dier");  
  10.       
  11.     Message msg = h.obtainMessage();  
  12.     msg.obj = "abc";  
  13.     msg.setData(b);  
  14.     msg.sendToTarget(); //将msg发送到目标对象  
  15.       
  16.     class MyHandler extends Handler{  
  17.         public MyHandler(){}  
  18.         public MyHandler(Looper looper){  
  19.             super(looper); //调用父类构造函数  
  20.         }  
  21.         @Override  
  22.         public void handleMessage(Message msg){  
  23.             System.out.println("obj:" + (String)msg.obj);  
  24.             Bundle b = msg.getData();  
  25.             System.out.println("age:" + b.getInt("age");  
  26.             System.out.println("name:" + b.getString("name");  
  27.         }  
  28.     }  

 



你可能感兴趣的:(Android学习笔记 - 线程篇)