尝试从Firebase数据库中检索数据正在跳帧。我试图遍历2000个数据节点并将其保存在我的SQLite数据库中。当数据加载到屏幕上时,仅显示GIF时,活动休息不多。
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
loadingKidsData(dataSnapshot, id);
loadingReadingData(dataSnapshot);
updateCurrentUserdata(dataSnapshot, id);
loadingParentsData(dataSnapshot, id);
databaseReference.removeEventListener(this);
gotToNewActivity(isParentSignedUp, id);
};
@Override
public void onCancelled(DatabaseError databaseError) {}
});
我还发现了this,但异步检索数据仍会导致跳帧。什么可以解决这个问题。
这就是其中一个函数的样子:
Integer couponcount = dataSnapshot.child("metadata").child("coupons").child("count").getValue(Integer.class);
if (couponDatabaseHandler.getCouponCount() < couponcount) {
couponDatabaseHandler.deleteTable();
Iterable<DataSnapshot> couponSnapshot = dataSnapshot.child("coupons").getChildren();
for (DataSnapshot snapshot : couponSnapshot) {
String code = snapshot.child("couponCode").getValue(String.class);
Integer used = snapshot.child("couponIsUsed").getValue(Integer.class);
couponDatabaseHandler.addCoupon(new Coupon(snapshot.getKey(), code, used));
}
}
有没有办法可以在任何地方加载数据,只有UI线程,以便不会跳帧?