有时候为了满足需求,我们需要在自己的类中进行线程管理/开启线程,并回调我们自己封装好的回调方法。例如:
public void someTask() {
new Thread() {
@Override
public void run() {
int n = yourObject.someApi();
onGetResult(n);
}
}.start();
}
private void onGetResult(int result) {
// 处理获取结果
}
在线程任务中调用了某个第三方API,获取到了结果后,我们继续调用封装好的onGetResult
方法。
当第三方API是同步调用时,这个流程很顺畅。但如果这里调用的是异步API,这里就没法直接获取结果了。因此我们需要再封装一层,将此API改成同步阻塞的调用,以便于上层任务调度使用。
例如我们有一个买车票的类TicketHelper
来作为第三方SDK调用,其中买车票的方法是异步实现的:
public class TicketHelper {
// 异步回调监听器
OnBuyTicketListener mListener;
public