Handler(消息机制)

Demo演示

//通过Handler事件倒计时的一个操作,并判断状态

 

public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton,mButton2;
private final static int STATE_START = 100;
private final static int STATE_RUN = 101;
private final static int STATE_END = 102;
//创建Handler对象
private Handler mHandler = new Handler() {
public void handleMessage(Message msg){
switch (msg.what){
case STATE_START:
mTextView.setText("倒计时开始");
break;
case STATE_RUN:
mTextView.setText(String.valueOf(msg.arg1));
break;
case STATE_END:
mTextView.setText("倒计时结束");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.textview);
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyThread myThread = new MyThread(10);
myThread.start();
}
});
}
class MyThread extends Thread{
int startnum;
MyThread(int num){
startnum = num ;

}

@Override
public void run() {
super.run();
Message startMsg = mHandler.obtainMessage();
startMsg.what=STATE_START;
mHandler.sendMessage(startMsg);
while (startnum >=0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message runMsg = mHandler.obtainMessage();
runMsg.what =STATE_RUN;
runMsg.arg1 = startnum;
mHandler.sendMessage(runMsg);
startnum--;

}
Message endMsg = mHandler.obtainMessage();
endMsg.what = STATE_END;
mHandler.sendMessage(endMsg);
}
}
}


//演示post() postAtTime() postdelayed()
public class NextActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mTextView;
private Button button_post, button_postattime, button_postdelayed;
private Handler mHandler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
mTextView = (TextView) findViewById(R.id.textview_next);
button_post = (Button) findViewById(R.id.button_next_post);
button_postattime = (Button) findViewById(R.id.button_next_postattime);
button_postdelayed = (Button) findViewById(R.id.button_next_postdelayed);
button_postdelayed.setOnClickListener(this);
button_post.setOnClickListener(this);
button_postattime.setOnClickListener(this);

}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_next_post:
mHandler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("立即执行");
}
});
break;
case R.id.button_next_postattime:
mHandler.postAtTime(new Runnable() {
@Override
public void run() {
mTextView.setText("指定时间执行");
}
},android.os.SystemClock.uptimeMillis() +2000); //PostAtTime的时间使用的是uptimeMillis()不是currentTimeMillis()
break;
case R.id.button_next_postdelayed:
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mTextView.setText("延迟时间执行");
}
}, 2000);
break;
}
}
}

 

posted @ 2016-05-20 15:26  Egg丶牛皮  阅读(172)  评论(0编辑  收藏  举报