android 多线程笔记

package com.example.appsmain;

import java.util.Timer;
import java.util.TimerTask;



import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {
	
	  private Button mButton;
	    private TextView mTextView;
	    private boolean isRunning = true;
	    private Thread mThread;
	    private int timer = 0;
	    private Handler handler;

	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main);

	        mButton = (Button) findViewById(R.id.button1);
	        mTextView = (TextView) findViewById(R.id.textView1);

	        mButton.setOnClickListener(new OnClickListener() {

	            @Override
	            public void onClick(View arg0) {
	                // TODO Auto-generated method stub
	                isRunning = false;//停止线程方法一
	                
//	                if (mThread!= null) { //停止线程方法二  
//	                	mThread.interrupt(); //外围调用关闭  
//	                	}
	            }
	        });
	        
	        
	        handler = new Handler() {//接收消息的子线程
	            @Override        
	            public void handleMessage(Message msg) {
	                switch (msg.what) {
	                case 0:
	                    mTextView.setText("计时:" + msg.obj);     
	                }
	            }
	        };


	        
	        mThread = new Thread(new Runnable() {//新建的线程

	            @Override
	            public void run() {
	                try {
	                    while (isRunning) {
	                        Thread.currentThread().sleep(1000);//计时时间 1s
	                        timer++;
	                        Message message = new Message();//可传递到其它线程的消息
	                        message.arg1 = 123;//整形
	                        message.obj = timer;// Object 类型
	                        message.what = 0;//what  用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。
	                        handler.sendMessage(message);
	                    }
	                } catch (InterruptedException e) {
	                    e.printStackTrace();
	                }

	            }
	        });
	        mThread.start();
	    }
	    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值