一.一般来说在主视图会新建一个Handler对象
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
Toast.makeText(MainActivity.this,"handler toast!1",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(MainActivity.this,"handler toast!2",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(MainActivity.this,"handler toast!3",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};
二.直接在activity生命周期调用
handler.sendEmptyMessageDelayed(1,2000);
三.在子线程上调用
new Thread(){
@Override
public void run() {
handler.sendEmptyMessageDelayed(2,10000);
}
}.start();
四.把引用传到子线程的用到的工具类里面
new Thread() {
public void run() {
MusicUtils.initMusic(MusicShowActivity.this, handler);
};
}.start();
五.直接传到Adapter构造函数里面
public ProfileDisplayAdapter(Context context, int width,
ArrayList<Profile> profileList, Handler handler) {
this.context = context;
this.width = width;
this.list = profileList;
this.handler = handler;
}
holder.iv_icon.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Message msg = Message.obtain();
msg.what = 3;
msg.arg1 = position;
handler.sendMessage(msg);
return true;
}
});
六.mHandler.postDelayed(mUpdateRunnable, 300L);--构造一个有间隔时间的死循环
private Runnable mUpdateRunnable = new UpdateRunnable();
mHandler.postDelayed(mUpdateRunnable, 300L);
class UpdateRunnable implements Runnable {
public void run() {
mHandler.sendEmptyMessage(50);
mHandler.postDelayed(mUpdateRunnable, 3500L);
}
}