android_Handler详解

来源:互联网 发布:廖雪峰python下载 编辑:程序博客网 时间:2024/06/08 04:09

Handler的一些API

这里写图片描述
这里写图片描述

写一个DEMO,这个DEMO主要用于无限循环图片的切换

public class MainActivity extends Activity {    int[] imageIds=new int[]{R.drawable.qq1,R.drawable.qq2};    int currentImage=0;    ImageView mIvShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mIvShow = (ImageView) findViewById(R.id.main_iv_show);      final   Handler handler=new Handler(){            @Override            public void handleMessage(Message msg) {                if(msg.what==0X123){                    mIvShow.setImageResource(imageIds[currentImage++%imageIds.length]);                }            }        };        new Timer().schedule(new TimerTask() {            @Override            public void run() {                handler.sendEmptyMessage(0X123);            }        }, 0,1200);    }}

下面这个Demo,如何不使用UI线程的Looper,子线程如何使用Handler

public class MainActivity extends Activity {    TextView mTvNumber;    Button mBtn;    CalThread mCalThread;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();        initListence();    }    public void init() {        mTvNumber = (TextView) findViewById(R.id.main_tv_number);        mBtn = (Button) findViewById(R.id.main_bt);        mCalThread = new CalThread();        mCalThread.start();    }    public void initListence(){        mBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Message msg=new Message();                msg.what=0X123;                mCalThread.mHandler.sendMessage(msg);            }        });    }    class CalThread extends Thread{        Handler mHandler;        @Override        public void run() {            Looper.prepare();            mHandler = new Handler(){                @Override                public void handleMessage(Message msg) {                    if(msg.what==0X123){                        Toast.makeText(MainActivity.this, "mmm", Toast.LENGTH_LONG).show();                    }                }            };            Looper.loop();        }    }}
0 0