1. 程式人生 > >獲取主執行緒的handler

獲取主執行緒的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); }