Luk*_*uke 5 android transactions runtime-error firebase
我遇到了一些代码的问题,这些代码直到今天还可以正常工作。基本上,我在身份验证后执行标准创建用户对象以获取额外的数据。
但是,当我只测试下面的代码时,它不再输入onComplete方法。相反,我在下面的日志中看到有关事务中止的错误。
谷歌什么都不会带来,那会是什么?
码:
final Firebase userLocation = new Firebase(Constants.USERS_URL).child(uid);
User newUser = new User(name, email);
userLocation.setValue(newUser, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if(firebaseError == null) {
...
}
else {
...
}
}
});
Run Code Online (Sandbox Code Playgroud)
日志:
04-05 16:13:04.274 4855-4912/com.nicedistractions.bestbefore D/AuthenticationManager: Sending request to https://auth.firebase.com/v2/best-before/users with 2 query params
04-05 16:13:05.437 4855-4855/com.nicedistractions.bestbefore I/RegisterPresenter: Successfully created user account with uid: 4a97cb4b-4034-4f46-98c3-4104d1d649b7
04-05 16:13:05.437 4855-4855/com.nicedistractions.bestbefore D/RegisterPresenter: Creating user object
04-05 16:13:05.484 4855-4912/com.nicedistractions.bestbefore D/WebSocket: ws_1 - Reset keepAlive. Remaining: 0
04-05 16:13:05.502 4855-4912/com.nicedistractions.bestbefore D/RepoOperation: set: /users/4a97cb4b-4034-4f46-98c3-4104d1d649b7
04-05 16:13:05.503 4855-4912/com.nicedistractions.bestbefore D/DataOperation: set: /users/4a97cb4b-4034-4f46-98c3-4104d1d649b7 {
email=xxxxxxxxxx@gmail.com
name=xxxxx xxxxxxxx
timestampJoined={
timestamp={.sv=timestamp}
}
}
04-05 16:13:05.503 4855-4912/com.nicedistractions.bestbefore D/Persistence: Starting transaction.
04-05 16:13:05.524 4855-4912/com.nicedistractions.bestbefore D/Persistence: Persisted user overwrite in 20ms
04-05 16:13:05.536 4855-4912/com.nicedistractions.bestbefore D/Persistence: Transaction completed. Elapsed: 33ms
04-05 16:13:05.538 4855-4912/com.nicedistractions.bestbefore D/RepoOperation: Aborting transactions for path: /users/4a97cb4b-4034-4f46-98c3-4104d1d649b7. Affected: /users/4a97cb4b-4034-4f46-98c3-4104d1d649b7
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
当我连接到 wifi 时,我能够在 Lollipop 上重现这一点,禁用实际的互联网连接,然后重新启用互联网连接(所有这些都使设备保持连接到 wifi 网络)。此后,如果我尝试执行 setValue() 写入,则在 Firebase 重新连接和 setValue() 完成之前大约需要 18 分钟。我联系了 Firebase 团队,被告知这是预期行为,因为 Android 操作系统基本上忽略了在连接恢复时通知应用程序。
根据我的经验,解决问题的唯一方法是禁用并重新启用 WiFi,或者重新启动应用程序(重新启动 Activity 没有帮助)。
Firebase 支持人员回复我并建议goOffline()先致电goOnline()- 我确认这会立即重新连接 Firebase 数据库。我现在要做的就是为 setValue() 设置一个带有我自己的超时的处理程序,因为我似乎不能依赖于 onComplete() 抛出的 DatabaseError 。
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |