Android消息机制—倒计时计数器
2017-01-07 10:09
363 查看
1,普通Handler,Thread;
package com.zdsoft.clock1230; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button bt_start; private TextView tv_show; private int count = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); bt_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { tv_show.setText(msg.obj + ""); } } }; new Thread() { @Override public void run() { while (count >= 0) { Message message = new Message(); message.what = 1; message.obj = count; handler.sendMessage(message); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } count--; } } }.start(); } }); } private void initView() { bt_start = (Button) findViewById(R.id.bt_start); tv_show = (TextView) findViewById(R.id.tv_show); } }
2、Looper
package com.zdsoft.clock1230; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button bt_start; private TextView tv_show; private int count = 10; private MyHandler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); handler = new MyHandler(); bt_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new MyThread()).start(); } }); } private void initView() { bt_start = (Button) findViewById(R.id.bt_start); tv_show = (TextView) findViewById(R.id.tv_show); } private class MyHandler extends Handler { @Override public void handleMessage(Message msg) { //接受消息处理UI if (msg.what == 1) { tv_show.setText(msg.obj + ""); } } } private class MyThread extends Thread { @Override public void run() { //发送消息 Looper.prepare(); while (count >= 0) { Message message = new Message(); message.what = 1; message.obj = count; handler.sendMessage(message); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } count--; } Looper.loop(); } } }
3、AsyncTask
package com.zdsoft.clock1230; import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button bt_start; private TextView tv_show; private int count = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); bt_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new MyTask().execute(); } }); } private void initView() { bt_start = (Button) findViewById(R.id.bt_start); tv_show = (TextView) findViewById(R.id.tv_show); } private class MyTask extends AsyncTask { @Override protected Object doInBackground(Object[] params) { while (count >= 0) { publishProgress(count); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } count--; } return "结束"; } /** * 执行过程中,更新UI * * @param values */ @Override protected void onProgressUpdate(Object[] values) { tv_show.setText(values[0].toString()); } /** * 执行结束后,更新UI * * @param o */ @Override protected void onPostExecute(Object o) { tv_show.setText(o.toString()); } } }
相关文章推荐
- Android--利用Handler消息转发机制实现倒计时(内含防止内存泄露处理)
- android消息机制,异步和多线程
- Android消息机制
- 深入剖析Android消息机制
- Android的消息机制(一)
- Android 的消息机制(1)
- Android进程间通信--消息机制及IPC机制实现
- Android进程间通信--消息机制及IPC机制实现
- Android消息机制(二)
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android 的消息机制(3)
- Android 消息处理机制
- 图解 Android Handler 线程消息机制
- android消息机制,异步和多线程
- Android消息机制(一)
- Android消息处理机制(二)
- Android进程间通信--消息机制及IPC机制实现 推荐
- Android消息处理机制:Handler Thread Message Looper []
- Android 的消息机制(2)
- android消息机制,异步和多线程