1.定義callback類:
public abstract class AppCallback {
public abstract void startCallback();
}
2.在觸發callback函數的地方定義:
private static AppCallback mClearAll = null;
并且定義注冊和移除callback的方法:
public static void registerCallback(AppCallback callback, int callBackId) {
if (callBackId == AppConstants.ID_CALL_BACK_OK) {
mFilterOk = callback;
} else if (callBackId == AppConstants.ID_CALL_BACK_CANCEL) {
mFilterCancel = callback;
} else if (callBackId == AppConstants.ID_CALL_CLEAR) {
mClearAll = callback;
}
}
public static void removeCallback(AppCallback callback) {
mClearAll = null;
mFilterOk = null;
mFilterCancel = null;
}
觸發事件中調用callback函數:
if (mClearAll != null) {
mClearAll.startCallback();
}
3.callback内的事務處理(一般和第二步不在一個類(activity)裡面,否則也不用使用callback):
首先在onResume中注冊callback:
public void onResume() {
mShaker.resume();
ResultPageOption.registerCallback(updateWithFilter, AppConstants.ID_CALL_BACK_OK);
ResultPageOption.registerCallback(updateWithFilter, AppConstants.ID_CALL_CLEAR);
ResultPageOption.registerCallback(filterCancel, AppConstants.ID_CALL_BACK_CANCEL);
super.onResume();
}
然後再onDestroy中銷毀callback:
public void onDestroy() {
super.onDestroy();
ResultPageOption.removeCallback(updateWithFilter);
}
最後實作callback内要做什麼:
private AppCallback updateWithFilter = new AppCallback(){
@Override
public void startCallback() {
clearAll();//要做的事
}
};