它不是的onCreate triggerred一次()方法。如果在OnCreate()方法中使用addValueEventListener,则不会停止removeEventListener。计数正在增加,从未停止,当我运行时负载高达85%,所以我不得不关闭我的网络并将其卸载。但我刚刚得到解决。这是我的代码,如果你想检查它。
变量声明为全局...
private DatabaseReference main;
private ValueEventListener valueEventListener;
在onCreate()方法.....
valueEventListener = main.addValueEventListener(new
ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
boolean countExists = false;
int count = 1; //starts from 1 when data is uploaded for the first time
for (DataSnapshot out: dataSnapshot.getChildren()) {
if (out.getKey().equals("count")) {
String temp = out.getValue(String.class);
countExists = true;
try {
count = Integer.parseInt(temp);
}
catch (NumberFormatException e) {
count = 1;
}
break;
}
}
if (!countExists) {
main.child("count").setValue(String.valueOf(count));
Toast.makeText(getApplicationContext(), "Count Created", Toast.LENGTH_SHORT).show();
upload.setClickable(true);
}
else {
main.child("count").setValue(String.valueOf(++count));
Toast.makeText(getApplicationContext(), "Count Updated", Toast.LENGTH_SHORT).show();
upload.setClickable(true);
}
main.removeEventListener(valueEventListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "Failed to upload", Toast.LENGTH_SHORT).show();
}
});
请务必添加removeEventListener当你调用它在onCreate()方法或它永远不会停止。如果不在onStart()方法中调用removeEventListener,则不会造成问题。
这不是你的问题,但...
如果你想利用火力对可能的自由,你不能让所有的用户下载资料,而不需要或您的带宽可能会成为在一天之内完全。因此,我计算数据并只下载该孩子的数值并比较结果并进行更新。所以当你调用addValueListener时它可以减少你的带宽。