zoukankan      html  css  js  c++  java
  • 线程01

    package jxnu.edu.cn.x3321;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.*;
    
    public class MainActivity extends Activity {
    
        //1.定义成员变量
        Button bt;
        TextView tv;
        
        Handler hd=new Handler() {
            public void handleMessage(Message msg) {//这个是在重写Handler里的handleMessage方法
                if(msg.what==1) {
                    //不断地更新TextView的值
                    tv.setText(String.valueOf(msg.obj));
                }
                //处理线程1的过程
            }
        };
        //message不断发送数据存到栈里,系统会每隔一段时间就会执行handler的handlemessage方法 从栈顶拿出对应的messgae
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //2.初始化
            init();
            
            //3.定义注册事件监听器
            bt.setOnClickListener(new View.OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //生成一个线程   方法:1.实现接口 2.new一个
                    new Thread() {
                        public void run() {
                            for(int i=0;i<10;i++) {
                                
                                try {
                                    Thread.sleep(1000);
                                    //以毫秒为单位
                                } catch (InterruptedException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                                //可能会产生异常所以要用trycatch裹起来
                                
                                //用messgae对象封装好数据传给主线程
                                Message ms=new Message();
                                ms.obj="更新后的值为:"+i;
                                //这句就是给ms赋值 是object类型
                                ms.what=1;//what表示数据的类型或者是标识 其他子线程what为2 相当于编个号
                                //接下来通过什么方式发给主线程 通过什么工具
                                hd.sendMessage(ms);
                                //hd.post(ms);还可以用这个 用这个就可以不要写sendmessage方法了 下节课讲
                            }
                        }//这个方法是任何线程都要有的 这是线程的入口 一旦启动线程就开始执行run方法(相当于main)
                        //线程可以休眠!(任何子线程都可以休眠 主不可以)
                    }.start();
                }
            });
        }
    
        private void init() {
            // TODO Auto-generated method stub
            bt=(Button)this.findViewById(R.id.bt);
            tv=(TextView)this.findViewById(R.id.tv);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }
  • 相关阅读:
    MySQL 重置Mysql root用户账号密码
    Git 在同一台机器上配置多个Git帐号
    JQuery 获取元素到浏览器可视窗口边缘的距离
    JQuery Ztree 树插件配置与应用小结
    JQuery iframe宽高度自适应浏览器窗口大小的解决方法
    JQuery jquerysessionjs插件使用介绍
    JQuery Deferred对象使用小结
    JQuery javascript实现父子页面相互调用
    JavaScript 使用new关键字调用函数
    CSS 让div,span等块级、非快级元素排列在同一行
  • 原文地址:https://www.cnblogs.com/hishark/p/7543009.html
Copyright © 2011-2022 走看看