handler使用之---线程队列与ui线程
这里Handler线程队列和ui主线程公用一共。Handler并没有真正的启动一个线程,而是直接调用run方法。
public class Test extends Activity implements OnClickListener {
? ? @Override
? ? protected void onStop() {
? ? ? ? // TODO Auto-generated method stub
? ? ? ? super.onStop();
? ? ? ? handerHandler.removeMessages(0);
? ? }
?
? ? private TextView textView1;
?
? ? public static int add;
?
? ? private Handler handerHandler = new Handler() {
?
? ? ? ? /*
? ? ? ? ?* (non-Javadoc)
? ? ? ? ?* @see android.os.Handler#handleMessage(android.os.Message)
? ? ? ? ?*/
? ? ? ? @Override
? ? ? ? public void handleMessage(Message msg) {
? ? ? ? ? ? switch (msg.what) {
? ? ? ? ? ? ? ? case 0:
// ? ? ? ? ? ? ? ? ? ?textView1.setText("add");
? ? ? ? ? ? ? ? ? ? textView1.setText(""+add+"");
? ? ? ? ? ? ? ? ? ?++add;
? ? ? ? ? ? ? ? ? ?removeMessages(0);
? ? ? ? ? ? ? ? ? ?sendEmptyMessageDelayed(0, 5000);
? ? ? ? ? ? ? ? ? ? Log.e("I AM HANDLER", "I AM TEST>>>>>>>>>>>>>>>>>>>>>>>O");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 1:
?
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
?
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 4:
?
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? super.handleMessage(msg);
? ? ? ? }
? ? };
?
? ? Runnable testRunnable = new Runnable() {
? ? ? ? public void run() {
?
? ? ? ? ? ? // 在这个线程里我们发送一个消息给消息队列,发完之后继续执行下面的代码,
? ? ? ? ? ? // 至于发送的消息的处理由handleMessage处理。这是异步的两个线程,实现了两个线程间的通信
? ? ? ? ? ? handerHandler.sendEmptyMessage(0);
? ? ? ? ? ? Log.e("这是一个线程", "》》》》》》》》》》》》》》》》》》》》》》这个线程要打印run");
? ? ? ? }
? ? };
? ? @Override
? ? public void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.main);
? ? ? ? init();
? ? ? ? handerHandler.post(testRunnable);
?
// ? ? ? ?Message msg = new Message();
// ? ? ? ?msg.what=0;
// ? ? ? ?handerHandler.sendMessage(msg);
? ? ? ? //这用方法比上面那种Message的获取方法节省内部空间
// ? ? ? ?Message msg=handerHandler.obtainMessage();
// ? ? ? ?msg.arg1=0;
// ? ? ? ?handerHandler.sendMessage(msg);
?
?
?
? ? }