需求
用户点击按钮,触发执行耗时操作。程序开启子线程,然后在子线程中执行耗时操作。当耗时操作执行完毕后,执行回调函数通知界面,修改界面内容。
实现过程
1.定义接口
public interface ProjectListCallBack {
// 创建一个公共方法,并设定传递参数类型
void getListData(ArrayList<Project> projectArrayList);
}
2.设置回调接口,事件触发的地方
// 1.接口回调
public ProjectListCallBack mProjectListCallBack;
// 2.实现接口的Set方法
public void setProjectListCallBack(ProjectListCallBack projectListCallBack) {
this.mProjectListCallBack = projectListCallBack;
}
public void selectProjectList() {
// 3.给接口的方法内的参数赋值
if (mProjectListCallBack != null) {
mProjectListCallBack.getListData(projectArrayList);
}
}
3.回调接口,实现接口内容的地方写
// 4.实现接口
public class ProjectActivity implements ProjectListCallBack{
protected void onCreate(Bundle savedInstanceState) {
...
// 5.实例化,由于我在设置回调的代码中写了单例,所有不需要new对象
ProjectBaseHelper.getsInstance(this).setProjectListCallBack(this);
}
}
// 6.实现回调接口
@Override
public void getListData(ArrayList<Project> projectArrayList) {
...
}