zoukankan      html  css  js  c++  java
  • Android多线程入门学习

    (1)进程间通信交换信息的一种方式--使用handler;

    (2)在主线程中new一个Handler对象,并重写他的handlerMessage(Message msg)方法;

    (3)Message中有几个属性,可以用来传递简单的int型的参数(一般定义多个static final int 的常量)用来给What分类;

    (4)obj属性可以用来传递其他对象,其中arg1和arg2两个属性可以用来储存int消息内容。

      下面是一个activity_main布局

     

    下面是主要Activity代码

    public class MainActivity extends Activity {  

     private  final static  String TAG =  "THREAD_ACTIVITY"; //调试标记  

    public   final static  int MUTI_THREAD  =  0;//用于what属性的标记变量  

    public   final static  int COMPLETE_THREAD  =  1;//用于what属性的标记变量    

    private Button btn;  private TextView tv;  

    private Handler handler = new Handler(){    @Override     public void handleMessage(Message msg)  //重写处理消息的方法  

    {   if(msg.what==MUTI_THREAD)

    {       tv.setText(""+msg.arg1);      }   

       else if(msg.what==COMPLETE_THREAD)

    {       tv.setText("complete");       btn.setText("complete");      }     

    super.handleMessage(msg);     }        };   

     @Override  protected void onCreate(Bundle savedInstanceState) {  

     super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);

       tv = (TextView) findViewById(R.id.tv);      

       btn = (Button)findViewById(R.id.btn);   

        btn.setOnClickListener( new OnClickListener() {       

     @Override    public void onClick(View v) {          

    start_thread();      btn.setText("running...");   

          }  

     });  

    }  

    private void start_thread() {   

    // TODO Auto-generated method stub  

      new Thread(){    //新线程

        @Override     public void run() {    

      // TODO Auto-generated method stub     

    int i = 100;     

    int j = 0;     

    Message msg = new Message();     

    for(j=1;j<i;j++){    

       Log.v(TAG, "J = "+j);     

      msg.what = MUTI_THREAD;    

       msg.arg1 = j;      

    handler.sendMessage(msg);    //每次发送一个消息    

       try {        

    Thread.sleep(1000);       }

    catch (InterruptedException e) {       

    // TODO Auto-generated catch block        e.printStackTrace();       }  

        }     

    msg.what = COMPLETE_THREAD;     

    handler.sendMessage(msg);     //完成时修改what属性          }    

       }.start();

      }

     }

     

    注意:在运行前必须加入permission权限INTERNET

  • 相关阅读:
    mysql 查询本年当前季度数据
    eclipse导入项目出现红叉怎么办
    input框只能输入正数
    解压MAC压缩的zip文件
    文件上传,文件下载,解压zip文件,判断压缩文件里面包含几个文件,判断压缩文件里是否包含指定的后缀文件
    解决IE下readonly的Input光标选中的问题
    前端JS下载文件总结
    Angular变更检测策略报错
    笛卡尔算法
    Angualr 内置工具-SelectionModel
  • 原文地址:https://www.cnblogs.com/jianrong-zheng/p/3229586.html
Copyright © 2011-2022 走看看