獲取主執行緒的handler
阿新 • • 發佈:2019-02-07
通常我們封裝框架的時候需要回調主線很多時候是傳個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 voidonMainError(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); voidonError(String msg); }