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();
}
}
}