gpt4 book ai didi

android - onDataChange() 在 android 离线时不被调用

转载 作者:行者123 更新时间:2023-11-29 16:56:48 25 4
gpt4 key购买 nike

(抱歉我的英语不好)有一个listView需要由 FirebaseDatabase 填充使用 setPersistenceEnabled(true) 启用了离线模式. listView在在线模式下完美填充,但在离线模式下 listViewlistView 中有 View 之前不会填充之前已经在线同步过。

我的意思是,如果我在安装后第一次在离线模式下使用应用程序以在离线模式下添加第一个数据(listView 中还没有 View ),offline cache正在写入,但 onDataChange没有被解雇,之后如果应用程序上线 listView将自动填充我之前在离线模式下输入的数据,之后 listView即使在离线模式下也能正常工作。

代码是:

private void getAndSetItem(){

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference itemReference = firebaseDatabase.getReference().child("groups").child(intent.getStringExtra("groupID"))
.child("items").child(hiddenUserID);
itemReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<Item> itemsArray = new ArrayList<Item>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
itemsArray.add(snapshot.getValue(Item.class));
}
ItemExtractor itemExtractor = new ItemExtractor(itemsArray);
CustomAdapterForItemList adapter = new CustomAdapterForItemList(ItemPage.this, itemExtractor.getItemNameList(),
itemExtractor.getItemPriceList(), itemExtractor.getItemQuantity(), itemExtractor.getDate());
listView.setAdapter(adapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

最佳答案

您无法更改此行为。对于使用 Firebase 数据库离线工作的应用程序,您需要至少将该应用程序连接到 Firebase 一次。您无法下载应用程序、离线和使用在线数据库。

发生这种情况是因为 setPersistenceEnabled(true) 首先需要 Firebase 连接。因此,将您的应用程序连接到 Firebase 并使用 setPersistenceEnabled(true) 使您的应用程序能够离线工作,这意味着 Firebase 将创建它自己的内部(本地)版本的数据库。

创建本地副本后,更新数据时,首先将其写入该本地版本的数据库。因此,所有对 Firebase 的写入都将立即触发本地事件,甚至在任何数据被写入服务器之前。这意味着无论 Internet 连接如何,该应用程序都将保持响应。重新建立 Internet 连接后,您将收到相应的当前服务器状态。 Firebase 客户端将该数据与 Firebase 服务器以及使用同一数据库的其他客户端同步。

希望对您有所帮助。

关于android - onDataChange() 在 android 离线时不被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44749654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com