当用户第一次打开应用时,我需要向Firebase数据库写入100条记录,但Firebase写入操作会完全冻结应用程序。
以下是产生问题的方法,我在片段中运行此方法,在另一方运行此方法时切换片段只是冻结应用程序
private void getContactsAndWrite() {
Cursor phones = getActivity().getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext()) {
String name = phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
String key = FirebaseUtil.getContactsRef().push().getKey();
Map<String, Object> contact = new HashMap<>();
contact.put("name", name);
contact.put("phoneNumber", phoneNumber);
FirebaseUtil.getContactsRef().child(key).setValue(contact);
}
phones.close();
}
评论此方法时,应用程序不会冻结
FirebaseUtil.getContactsRef().child(key).setValue(contact);
同样的冻结问题也显示在快速滚动显示在RecyclerView中的这些联系人时,在其适配器中我有代码将联系信息写入firebase数据库(如果在firebase数据库中找不到它)
如何解决此问题?