package com.example.androidapp;
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.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView1=null;
private Button startButton=null;
private Button endButton=null;
/*创建Handler对象,作为进程传递postDelayed之用*/
private Handler objHandler=new Handler();
/* 在MainActivity中定义Handler对象作为成员变量
* 通过Handler这个对象对主线程中的控件进行更新
* */
private Handler handler=new Handler(){
public void handleMessage(Message msg){
switch (msg.what) {
case 0:
/*取出参数更新控件*/
textView1.setText(msg.getData().getString("counter"));
break;
default:
break;
}
super.handleMessage(msg);
}
};
private Runnable myRunnable=new Runnable() {
private int counter=0;
@Override
public void run() {
/*传参*/
Message msg=new Message();
msg.what=0;
Bundle bundle=new Bundle();
bundle.putString("counter", String.valueOf(++counter));
msg.setData(bundle);
/*发送信息到Handler*/
handler.sendMessage(msg);
/*再次调用此Runnable对象,以实现每1秒实现一次的定时器操作*/
objHandler.postDelayed(myRunnable, 1000);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1=(TextView)findViewById(R.id.textView1);
/*开始线程*/
startButton=(Button)findViewById(R.id.startButton);
startButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
/*开始线程,调用Runnable*/
objHandler.post(myRunnable);
}
});
/*结束线程*/
endButton=(Button)findViewById(R.id.endButton);
endButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
/*结束线程,删除mTask运行线程*/
objHandler.removeCallbacks(myRunnable);
}
});
}
@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;
}
}
Android 多线程更新控件
最新推荐文章于 2023-05-09 21:54:41 发布