获取主线程的handler

    通常我们封装框架的时候需要回调主线很多时候是传个handler进来,或者用rxjava、eventbus等跨线程交换数据的方式。

    如果通过handler的形式切换线程就需要获取到主线程的handler,这时候以前都是通过在activity中创建实例后传进来,但是这样子不太美观,所以应然而生在其他地方获取到主线程的handler是尤为重要。

   具体代码如下:

private Handler getMainHandler(){
   if (mainHandler==null)
      return (mainHandler = new Handler(Looper.getMainLooper()));
   else
      return mainHandler;
}
假如在数据处理业务用可以:
private <T> void onMainSuccess(final OnDataCallBack<T>callBack, final T result){
   if (callBack==null)
      return;
   getMainHandler().post(new Runnable() {
      @Override
      public void run() {
         callBack.onSuccess(result);
      }
   });
}
private void onMainError(final OnDataCallBack callBack, final String msg){
   if (callBack==null)
      return;
   getMainHandler().post(new Runnable() {
      @Override
      public void run() {
         callBack.onError(msg);
      }
   });
}
 
  
public interface OnDataCallBack<result>{
    void onSuccess(result result);
    void onError(String msg);
}

你可能感兴趣的:(随记)