我使用Firebase創建了一個應用程序。有一個我無法解決的問題,並沒有在這裏討論。Android - onDataChange()奇怪的行爲
在這種方法中,我想檢查一些數據是否已經在服務器中。如果沒有 - 我想添加它(添加代碼的效果很好,Firebase數據庫正在根據需要進行更改)。所以我使用onDataChange方法如下:
public boolean insertNewList(String title)
{
System.out.println("start: ");
final boolean[] result = new boolean[1];
result[0]=false;
final String group = title;
mRootRef = some reference...
mRootRef.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
System.out.println(0);
if (dataSnapshot.child(group).getValue() != null)
{
System.out.println(group + " is already exist");
System.out.println(1);
}
//write the data.
else
{
mRootRef=mRootRef.child(group);
mRootRef.push().setValue("some data");
System.out.println(2);
result[0]=true;
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
System.out.println(3);
return result[0];
}
但是真的發生是這樣的輸出:
begin:
3 (just skip on onDataChange method and return false).
some print after calling the function
0 (goes back to function and enter to onDataChange method)
2 (finally goes where I want it to go)
0 (for some reason enters twice :( )
1
正因爲如此我接受這個功能錯誤的結果。 你能幫忙嗎?
對不起,我用「開始」取代了「開始」,但沒關係。 – ayelet