Callback是什么?
当我们需要把耗时操作发送到子线程运行时, 需要在耗时操作完成时将结果放到主线程来呈现或者再处理时, 我们需要在子线程主动地回头调用主线程中处理结果的方法, 这种回调式的机制就是Callback.
如何使用 Callback?
主线程:
//调用包含子线程以及耗时操作的方法, 并注入匿名内部类, 其中的onSuccess作为回调方法
Service.login("xxx", "xxx", new Service.Callback<String>() {
@Override
public void onSuccess(String result) {
System.out.println(result);
}
});
子线程:
public class Service {
public static void login(String account, String password, final Callback<String> callback) {
{//假设这对花括号内部是子线程环境
//.
//.
//.
//一系列费时处理之后
String result = "xxx";
callback.onSuccess(result); // 主动调用主线程注入的onSuccess方法
}
}
public static abstract class Callback<T> {
public abstract void onSuccess(T t) ;
}
}
Callback的使用场景
Android中需要自定义的使用callback主要是在网络访问上, 网络访问是一个耗时操作, 不能马上返回结果, 因此结果的返回就不能直接使用return, 这里就需要使用Callback机制, 在网络访问完成时, 主动调用结果处理函数