对于示例 1,我需要一个更短且更简洁的解决方案。因此,需要在某个 Activity/Fragment 启动之前完成多个异步调用。示例 1 的成员布尔值非常混乱和丑陋,但可以工作。
我正在考虑使用 Google Tasks API。但为此,我需要添加一个 google-services.json 并连接到“Google 登录”、“分析”或“云消息传递”,我认为这些我不需要。必须有更好的方法还是这是正确的方法?
示例 1:
boolean mIsFirstDone = false;
boolean mIsSecondDone = false;
boolean mAlreadyDone = false;
private void prepareSomeData() {
dataManager.requestSomeContent(new ApiCallback() {
@Override
public void onSuccess(final Object object) {
mIsFirstDone = true;
if(mIsFirstDone && mIsSecondDone && !mAlreadyDone) {
mAlreadyDone = true;
doSomething();
}
}
});
}
private void prepareSomeSettings() {
dataManager.requestSomeSettings(new ApiCallback() {
@Override
public void onSuccess(final Object object) {
mIsSecondDone = true;
if(mIsFirstDone && mIsSecondDone && !mAlreadyDone) {
mAlreadyDone = true;
doSomething();
}
}
});
}
使用任务 API:
Tasks.whenAll(SomeDataTask, SomeSettingsTask).addOnSuccessListener(executor, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void v) {
doSomething();
}
}).addOnFailureListener(executor, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});