Activity代码:
- public class MainActivity extends Activity {
- private MyThread myThread;
- private Handler handler; //子线程与UI主线程进行消息通信
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //通过Handler获取子线程推送过来的消息
- handler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- Bundle bundle = msg.getData();
- String value = bundle.getString("value");
- outputEditText.setText(value);
- }
- };
- //启动一个子线程
- myThread = new MyThread(handler);
- myThread.start();
- showDialog("Socket Thread Started!");
- }
- /**
- * 对话框显示
- */
- private void showDialog(String msg){
- new AlertDialog.Builder(this)
- .setTitle("提示")
- .setMessage(msg)
- .setPositiveButton("ok", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- }
- }).show();
- }
- }
伦理片 http://www.dotdy.com/
Thread代码:
- public class MyThread extends Thread{
- private Handler handler;
- public MyThread(Handler handler){
- this.handler = handler;
- }
- @Override
- public void run() {
- try {
- //持续向UI主线程发送当前日期时间
- while(true){
- TimeUnit.MILLISECONDS.sleep(1000);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String date = sdf.format(new Date());
- sendMessage(date);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 向UI主线程发送消息
- */
- private void sendMessage(String msg){
- Bundle data = new Bundle();
- data.putString("value", msg);
- Message message = new Message();
- message.setData(data);
- this.handler.sendMessage(message);
- }
- }