它不是的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時它可以減少你的帶寬。