Handler简单用法

来源:互联网 发布:手机淘宝评论怎么截图 编辑:程序博客网 时间:2024/06/03 17:36
private Handler handler = new Handler(){    @Override    public void handleMessage(Message msg) {        switch (msg.what) {            case SUCCESS:                ivIcon.setImageBitmap((Bitmap) msg.obj);                break;            case ERROR:                Toast.makeText(MainActivity.this, "抓取失败", Toast.LENGTH_LONG).show();                break;        }    }};1,        Message message = new Message();        message.obj = object;        handler.sendMessage(message);  2,服用系统提供的。      Message message  = handler.obainMessage();      message.obj = object;      handler.sendMessage(message);   3,handler.sendMessage(message);           作用等同于:      message.sendToTarget();      移除消息      handler.removeCallbacks(runbale);

mHandler = new Handler( mCallback ) ;

private Handler handler = new Handler(new CallBack){    @Override    public void handleMessage(Message msg) {        switch (msg.what) {            case SUCCESS:                ivIcon.setImageBitmap((Bitmap) msg.obj);                break;        }    }};

同上:

public class HandlerDemo {    private Handler myHandler1 = new Handler(new MyHandlerCallback());    private Handler myHandler2 = new MyHandler();    private class MyHandlerCallback implements Handler.Callback {        @Override        public boolean handleMessage(Message msg) {            // Handle messages.            return false;        }    }    private class MyHandler extends Handler {        @Override        public void handleMessage(Message msg) {            // Handle messages.        }    }}
CallBack里面的函数,如果returnfalse,着不会做其他的操作,如果return=true,这会拦截public void handleMessage(...)函数的的操作。  public boolean handleMessage(Message msg) {            // Handle messages.            return false;        }

HandlerThread

创建一个HandlerThread,即创建了一个包含Looper的线程。HandlerThread handlerThread = new HandlerThread("leochin.com");handlerThread.start(); //创建HandlerThread后一定要start()获取HandlerThread的LooperLooper looper = handlerThread.getLooper();创建Handler,通过Looper初始化Handler handler = new Handler(looper);
     HandlerThread thread = new HandlerThread("handler thread");      thread.start();      handler = new Handler(thread.getLooper(){          public void handleMessage(android.os.Message msg){              Sout("current thread ------>"+Thread.currentThread());          }      });      handler.sendEmpthMessage(1);

handler常见 报错
1,Only the original thread that create a view hierarchy can touch its view
由于:在子线程中修改主线程的UI

2,Can not create handler inside thread t….
缺少Looper.loop();

new Thread(){    public void run(){        Handler handler = new Handler();    }}.start();
0 0
原创粉丝点击