package com.bigfat.handlertest; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity implements View.OnClickListener { private static final String TAG = "MainActivity"; private TextView tvMain; private ImageView imgMain; private Button btnMainStop; private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { Toast.makeText(MainActivity.this, "1", Toast.LENGTH_SHORT).show(); return false; } }) { @Override public void handleMessage(Message msg) { // tvMain.setText(msg.arg1 + "-" + msg.arg2 + "=" + (msg.arg1 - msg.arg2) + "\n" + msg.obj); Toast.makeText(MainActivity.this, "2", Toast.LENGTH_SHORT).show(); } }; private Runnable mRunnable = new Runnable() { @Override public void run() { img_index++; img_index = img_index % 3; imgMain.setImageResource(Constant.IMG[img_index]); mHandler.postDelayed(mRunnable, 1000); } }; private int img_index; class MyThread extends Thread { public Handler handler; public Looper looper; @Override public void run() { Looper.prepare(); looper = Looper.myLooper(); handler = new Handler() { @Override public void handleMessage(Message msg) { Log.i(TAG, "currentThread:" + Thread.currentThread()); } }; Looper.loop(); } } private Handler threadHandler = new Handler() { @Override public void handleMessage(Message msg) { Log.i(TAG, "UIThread:" + Thread.currentThread()); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initEvent(); MyThread thread = new MyThread(); thread.start(); // try { // thread.sleep(2000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // thread.handler.sendEmptyMessage(1); // threadHandler.sendEmptyMessage(1); threadHandler = new Handler(thread.looper) { @Override public void handleMessage(Message msg) { Log.i(TAG, "UIThread:" + Thread.currentThread()); } }; threadHandler.sendEmptyMessage(1); // mHandler.postDelayed(mRunnable, 1000); // // new Thread() { // @Override // public void run() { // try { // Thread.sleep(1000); // // Message msg = Message.obtain(mHandler,new Runnable() { // @Override // public void run() { // Toast.makeText(MainActivity.this,"0",Toast.LENGTH_SHORT).show(); // } // }); // msg.arg1 = 101; // msg.arg2 = 30; // Person p = new Person("小明", 12); // msg.obj = p; // msg.sendToTarget(); // // //// mHandler.sendMessage(msg); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // }.start(); // new Thread() { // @Override // public void run() { // try { // Thread.sleep(1000); // mHandler.post(new Runnable() { // @Override // public void run() { // tvMain.setText("没有报错"); // } // }); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } // }.start(); } private void initView() { tvMain = (TextView) findViewById(R.id.tv_main); imgMain = (ImageView) findViewById(R.id.img_main); btnMainStop = (Button) findViewById(R.id.btn_main_stop); } private void initEvent() { btnMainStop.setOnClickListener(this); } @Override public void onClick(View v) { mHandler.removeCallbacks(mRunnable); } }