Android 安卓Firestore重启应用程序
嗨,我正在使用Firebase Firestore来存储数据,而不使用服务器。但是,我想我在Firestore的快照侦听器上遇到了问题。下面是我使用的代码 出现问题的快照侦听器Android 安卓Firestore重启应用程序,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,嗨,我正在使用Firebase Firestore来存储数据,而不使用服务器。但是,我想我在Firestore的快照侦听器上遇到了问题。下面是我使用的代码 出现问题的快照侦听器 register = FireStore.getUserInfo(firestore, uid).addSnapshotListener(new EventListener<DocumentSnapshot>() { @Override public void onEvent(Document
register = FireStore.getUserInfo(firestore, uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Log.d("Snapshot Listener", "Calling");
String source = documentSnapshot != null && documentSnapshot.getMetadata().hasPendingWrites() ? "local" : "server";
if(documentSnapshot != null & documentSnapshot.exists()) {
Log.d("Snapshot Listener", source + " data :" + documentSnapshot.getData());
} else {
Log.d("Snapshot Listener", source + " data : null");
}
currentUser = documentSnapshot.toObject(User.class);
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("Snapshot Listener", "Point is updated.");
tvBoneNum.setText(String.valueOf(currentUser.getPoint()));
}
});
}
});
当用户类的值发生更改,并将这些值更新到firestore中时,快照侦听器应该确认onEvent()方法和onEvent方法代码下面的进程,但它会使我的应用程序重新启动。其他快照侦听器不会使应用程序重新启动。我想不出这个问题的原因。如何解决这个问题?您需要将从数据库获取数据的逻辑移到if语句中。您的数据可能是
null
。因此,如果为空,则不需要执行这些代码行。这就是你重新启动应用程序的原因
register = FireStore.getUserInfo(firestore, uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Log.d("Snapshot Listener", "Calling");
String source = documentSnapshot != null && documentSnapshot.getMetadata().hasPendingWrites() ? "local" : "server";
if(documentSnapshot != null & documentSnapshot.exists()) {
Log.d("Snapshot Listener", source + " data :" + documentSnapshot.getData());
currentUser = documentSnapshot.toObject(User.class);
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("Snapshot Listener", "Point is updated.");
tvBoneNum.setText(String.valueOf(currentUser.getPoint()));
}
});
} else {
Log.d("Snapshot Listener", source + " data : null");
}
}
});
register=FireStore.getUserInfo(FireStore,uid).addSnapshotListener(新的EventListener(){
@凌驾
public void onEvent(DocumentSnapshot DocumentSnapshot,FireBaseFireStoree异常){
Log.d(“快照侦听器”、“调用”);
String source=documentSnapshot!=null&&documentSnapshot.getMetadata().hasPendingWrites()?“local”:“server”;
if(documentSnapshot!=null&documentSnapshot.exists()){
Log.d(“快照侦听器”,源+“数据:”+documentSnapshot.getData());
currentUser=documentSnapshot.toObject(User.class);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
Log.d(“快照侦听器”,“点已更新”);
tvboneum.setText(String.valueOf(currentUser.getPoint());
}
});
}否则{
Log.d(“快照侦听器”,源+“数据:null”);
}
}
});
register = FireStore.getUserInfo(firestore, uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(DocumentSnapshot documentSnapshot, FirebaseFirestoreException e) {
Log.d("Snapshot Listener", "Calling");
String source = documentSnapshot != null && documentSnapshot.getMetadata().hasPendingWrites() ? "local" : "server";
if(documentSnapshot != null & documentSnapshot.exists()) {
Log.d("Snapshot Listener", source + " data :" + documentSnapshot.getData());
currentUser = documentSnapshot.toObject(User.class);
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("Snapshot Listener", "Point is updated.");
tvBoneNum.setText(String.valueOf(currentUser.getPoint()));
}
});
} else {
Log.d("Snapshot Listener", source + " data : null");
}
}
});