我正在尝试在Firebase实时数据库中推送节点并为其设置一些值,但是由于某种原因,它的工作方式不一致。这是我用来推送值的方法。更具体地说,当我启动该应用程序时,它运行良好,但是在说该应用程序仅在无活动的情况下运行5分钟后,我将无法再使用setValue。图片的上传效果很好。
void addItemToServerShop(ShopItem shopItem, ShopData shopData, Context context){
DatabaseReference shopContainerRef = database.getReference("ShopsContainer").child(getShopData().getShopPushID()).child("ShopItems").push();
shopContainerRef.child("Name").setValue(shopItem.getName());
shopContainerRef.child("Filename").setValue(shopItem.getFileName());
uploadImage(shopItem.getFileName(), shopData, context);
}
控制台绝对不会显示任何信息。 我尝试使用Log.e()语句跟踪错误,如下所示。
void addItemToServerShop(ShopItem shopItem, ShopData shopData, Context context){
DatabaseReference shopContainerRef = database.getReference("ShopsContainer").child(getShopData().getShopPushID()).child("ShopItems").push();
shopContainerRef.child("Name").setValue(shopItem.getName()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isComplete()){
Log.e("Task","Completed");
}
if(task.isCanceled()){
Log.e("Task","Canceled");
}
if(task.isSuccessful()){
Log.e("Task","Successful");
}
Log.e("Result is",String.valueOf(task.getResult()));
}
});
Log.e("path is", String.valueOf(shopContainerRef.child("Name").getRef()));
shopContainerRef.child("Filename").setValue(shopItem.getFileName());
uploadImage(shopItem.getFileName(), shopData, context);
}
当setValue不执行时,我没有记录OnCompleteListener中的任何语句,但是图片已上传到存储中,所以我猜想任务永远不会完成。我不知道如何从这里开始。任何帮助或建议,表示赞赏!