在我们使用线程的时候,实现runable接口处理自己的逻辑,将runable传给线程对象,线程就可以调用我们的处理函数了
使用listview的时候,自定义一个适配器,传给listview,listview就可以调用我们自定义适配器中的接口函数了
我们也可以在自己的类中创建接口回调,供别人使用:
模拟一个短信备份的工具类,短信备份函数接收一个参数作为回调接口传入,在备份过程调用回调函数处理用户逻辑,达到友好的交互
短信备份类:
public class SmsUtils {
//短信备份回调接口类,由使用者实现
public interface SmsBackUpCallBack{
//备份之前调用,参数为短信总数
public void beforeSmsBackup(int size);
<span style="white-space:pre"> </span>//备份过程中调用,参数为备份到第几条了
public void ateferSmsBackup(int progress);
}
public static boolean smsBackUp(Context context, SmsBackUpCallBack callBack) throws Exception {
<span style="white-space:pre"> </span> int size = 50;//模拟50条短信
callBack.beforeSmsBackup(size);
int mProgress;
for (<span style="font-family: Arial, Helvetica, sans-serif;">mProgress=1;mProgress<51;mProgress++</span><span style="font-family: Arial, Helvetica, sans-serif;">) {</span>
callBack.ateferSmsBackup(mProgress);
SystemClock.sleep(500);
}
return true;
}
}
使用短信备份类:用户自己实现两个接口回调函数的逻辑处理,调用备份函数的时候传递给我们就可以
boolean result = SmsUtils.smsBackUp(getApplicationContext(), new SmsUtils.SmsBackUpCallBack() {
public void beforeSmsBackup(int size) {
mProgressDialog.setMax(size);//设置进度条
}
public void ateferSmsBackup(int progress) {
mProgressDialog.setProgress(progress);//更新进度条
}
});