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();//要做的事
}
};

更多相关文章

  1. android中打印函数调用栈、内存使用、屏幕分辨率
  2. 自定义 Theme 改变 系统全局样式
  3. Android(安卓)使用自定义cursorAdapter
  4. Android(安卓)自定义漂亮的圆形进度条
  5. android之helloworld详解
  6. Android双击事件拦截方法
  7. android GPS HAL 回调函数实现
  8. Android(安卓)Kotlin 接口函数
  9. android 之 GridView

随机推荐

  1. Mysql通过Adjacency List(邻接表)存储树
  2. Mysql实现企业级日志管理、备份与恢复的
  3. 深入分析MySQL Sending data查询慢问题
  4. windows下重置mysql的root密码方法介绍
  5. Sql查询MySql数据库中的表名和描述表中字
  6. mysql5.7.14 解压版安装配置方法图文教程
  7. MySQL事务的基础学习以及心得分享
  8. 详解MySQL分组链接的使用技巧
  9. win10下完全卸载+重装MySQL步骤详解
  10. MySQL数据库Event定时执行任务详解