java - 在firebase数据获取方法中创建无限循环
问题描述
private void fetchdata() {
db.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
ArrayList<String> cities = (ArrayList) documentSnapshot.get("cities");
i = new Intent(Splash.this, Select.class);
i.putStringArrayListExtra("cities", cities);
startActivity(i);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
/*do when the cities list is not fetch */
fetchdata();
}
});
}
如果在失败侦听器中再次调用发生数据获取错误的方法并且启动继续,它会在启动屏幕中工作,这是......正确的方式
解决方案
private void fetchdata() {
ArrayList<String> cities = new ArrayList<String>();
i = new Intent(Splash.this, Select.class);
db.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
cities = (ArrayList) documentSnapshot.get("cities");
i.putStringArrayListExtra("cities", cities);
startActivity(i);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
/* simple startActivity */
i.putStringArrayListExtra("cities", cities);
startActivity(i);
}
});
}
推荐阅读
- python - 发生异常:NoEntryPointError
- python - 使用 LabelEncoder() 编码数据
- c - 逐行扫描数字并在某个点停止 (C)
- javascript - 如何从带有分隔符#的字符串中获取多个子字符串
- amazon-web-services - 如何更改您不是所有者的 Amazon S3 对象的权限
- arrays - 如何确定数组在c中的维数
- r - 在 R 中的 ggscatter 上更改 pearson 传奇
- python - 在 Python 中返回上一个浏览器窗口
- java - 对如何将反应式范式与 DDD 一起使用的疑问 - 域存储库
- php - 所有行jquery中的性能问题循环