提前致谢。
global.getDatabaseReference().child(ApplicationConstants.TOPIC_DB).child(Util.getSelectedBoard(context)).child(Util.getSelectedClass(context)).child(Util.getSelectedLanguagePackage(context)).child("CategoryId_1").child(subject).child(ApplicationConstants.TOPICS).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
try {
topicContentArrayList = new ArrayList<>();
HashMap<String, HashMap<String, String>> modelHashMap = null;
int pos =0;
for (DataSnapshot single_ : dataSnapshot.getChildren()) {
modelHashMap = new HashMap<>();
HashMap<String, String> innerTopicNode = (HashMap<String, String>) single_.getValue();
innerTopicNode.put("mastery", "0");
innerTopicNode.put("enabled", innerTopicNode.get("Display"));
innerTopicNode.put("currentLevel", "1");
innerTopicNode.put("flag", "Done");
innerTopicNode.put("score", "0");
modelHashMap.put(pos + "", innerTopicNode);
pos++;
topicContentArrayList.add(modelHashMap);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Util.dismissdataDialog();
}
});
这是内存错误 背景部分并发标记扫描GC释放277003(9MB) 它阻止了用户界面,我无法执行点击操作一段时间。 请帮我解决这个问题。
答案 0 :(得分:1)
当您尝试获取大量数据时,这是正常行为。如果您想避免这样的错误,您应该考虑以小块的形式加载数据。为此,您可以filter your data使用Firebase提供的其中一种方法。