Java에서 Firebase를 사용하고 있습니다. 사용자의 정보가 업데이트되어야했다 때 다음과 같은 간단한 코드는 항상 잘 작동하고있다 : 나는 온라인으로 최근 된 모든 사용자의 목록을 얻을 수 있도록 FirebaseException : NodeUtilities.NodeFromJSON의 클래스로 노드를 구문 분석하지 못했습니다.
final FirebaseBean_User userObject = new FirebaseBean_User(uuid, name, timestamp, points, gamesPlayed, gamesWon);
mFirebaseUser.setValue(userObject, System.currentTimeMillis());
나는 우선 순위 값으로 현재의 타임 스탬프를 사용했다.
그러나 사용자가 오프라인 상태가되면 오프라인으로 표시하려고합니다. 따라서 중간에 하나의 단순한 줄을 추가했습니다.이 코드 조각이 갑자기 작동을 멈췄습니다. 나는 다음과 같은 Exception을 얻었습니다. 원인이되는 라인 (465)은 중간의 새로운 라인입니다 :
FATAL EXCEPTION: main
com.firebase.client.FirebaseException: Failed to parse node with class class com.my.package.MultiplayerService$FirebaseBean_User
at com.firebase.client.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:130)
at com.firebase.client.OnDisconnect.setValue(OnDisconnect.java:81)
at com.my.package.MultiplayerService.updateUserInformation(MultiplayerService.java:465)
at com.my.package.MultiplayerService.access$4(MultiplayerService.java:461)
at com.my.package.MultiplayerService$1.onDataChange(MultiplayerService.java:83)
at com.firebase.client.core.ValueListenerContainer$1.run(ValueListenerContainer.java:50)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
왜 그런가? 내가 뭐 잘못하고 있니? 내 말은, 전에 setValue()
벌금 일한 지금은 유일한 변화는 onDisconnect()
에 전화뿐만 아니라 작동을 멈 춥니 다.
(이전 여부를 해당 참조 지점에서 데이터가 있었는지는 중요하지 않습니다.) 여기
는 참조 용으로 사용되는 클래스입니다 :private static class FirebaseBean_User {
private String uuid;
private String name;
private int lastlogin;
private double points;
private int gamesplayed;
private int gameswon;
private FirebaseBean_User() { }
public FirebaseBean_User(String uuid, String name, int lastlogin, double points, int gamesplayed, int gameswon) {
this.uuid = uuid;
this.name = name;
this.lastlogin = lastlogin;
this.points = points;
this.gamesplayed = gamesplayed;
this.gameswon = gameswon;
}
public String getUuid() {
return uuid;
}
public String getName() {
return name;
}
public int getLastlogin() {
return lastlogin;
}
public double getPoints() {
return points;
}
public int getGamesplayed() {
return gamesplayed;
}
public int getGameswon() {
return gameswon;
}
@Override
public boolean equals(Object o) {
return (o instanceof FirebaseBean_User && ((FirebaseBean_User) o).getUuid() == this.uuid);
}
}
onDisconnect는 FirebaseBean_User (userObject) 객체를 JSON 문자열로 또는 JSON 문자열에서 구문 분석 할 수없는 것으로 보입니다. –
예, 이것은 Throw 된 Exception (_into_ JSON)에 의해 명백합니다. 그러나 질문은 _why_입니다. 정확하게 이것은 그렇습니다. 보시다시피, onDisconnect(). setValue()와 setValue()는 참조 노드에 같은 객체를 쓰지만'setValue()'와'onDisconnect(). setValue() '(전에 한 줄만), 작동하지 않습니다. 왜? – caw
USER_PRIORITY_OFFLINE의 값은 무엇입니까? 나는 엔진이 그것을 유효한 JSON으로 파싱 할 수 없다고 추측하고있다. – Anant