当我一次又一次地请求 Firebase 时,会出现性能问题。网格视图更新非常缓慢。那么在这种情况下我应该怎么做我想将帖子的路径存储在数据库中。这是个好主意还是存储在内部存储中。(缓存)
private void setuptempGrid(View view){
setupImageGrid(ProfileActivity.images,view);
FirebaseDatabase.getInstance().getReference()
.child(getString(R.string.db_user_posts))
.child(application.getUser().getUserId()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot d:dataSnapshot.getChildren() ) {
FirebaseDatabase.getInstance().getReference()
.child(getString(R.string.db_posts)).child(getString(R.string.db_public))
.child(d.getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
gridImageAdapter.add(dataSnapshot.getValue(Posts.class).getProfilePic());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
我有这段代码,这需要很长时间才能获取图像,并且每次在创建我的片段时加载它。
用
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
累积 到文档
通过启用持久性,即使用户或操作系统重新启动应用程序,Firebase 实时数据库客户端在线时同步的任何数据仍会保留在磁盘上并可离线使用。这意味着您的应用程序通过使用存储在缓存中的本地数据可以像在线一样工作。
并且还做——
DatabaseReference db = FirebaseDatabase.getInstance().getReference()
.child(getString(R.string.db_user_posts))
.child(application.getUser().getUserId());
db.keepSynced(true);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句