我目前正在使用Firebase作为后端存储,并希望检索一组数据。
使用FirebaseUI-Android我将获取数据并将其作为列表进行调整。
起初我认为问题出在数据集上,但在将数据集减少到只有两个由几个简单字符串组成的json对象后,问题仍然存在。
以下是用于检索数据的代码。
mDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference myRef = mDatabase.child("events/");
Log.d("TST", "Before Firebase");
//ListAdapter eventListAdapter;
upcomingEventsList.setAdapter(new FirebaseListAdapter<EventListModel>(getActivity(), EventListModel.class, android.R.layout.two_line_list_item, myRef) {
@Override
protected void populateView(View v, EventListModel model, int position) {
Log.d("TST", "After Firebase");
}
});
以下是与相关消息的时间一起给出的运行消息。
**01-10 23:18:25.113** D/TST: Before Firebase
I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.AF.1....020_msm8960_LA.AF.1.1_RB1__release_AU ()
OpenGL ES Shader Compiler Version: E031.25.03.06
Build Date: 05/22/15 Fri
Local Branch: mybranch10237523
Remote Branch: quic/LA.AF.1.1_rb1.18
Local Patches: NONE
Reconstruct Branch: AU_LINUX_ANDROID_LA.AF.1.1_RB1.05.00.02.006.020.....NOTHING
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Enabling debug mode 0
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 4
I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@1f008d67 time:914885804
I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@1b48d3c0 time:914885804
**01-10 23:18:28.283** D/TST: After Firebase
**01-10 23:18:28.283** D/TST: After Firebase
这是大约损失吗? 3.5s正常还是我做错了什么?
为什么populateView方法不会被访问两次(根据2 TST:After Firebase 消息显示)?
在上面的示例中检索的数据集是以下两个数据对象:
{end_date=1476835200,
title=Test, location=Test, content=Test,
start_date=1476835200, featured_image=Test,
categories=[festivals, music]}
编辑以回答Frank的问题
使用相同的数据集和新的数据集尝试第二次连接的次数要少得多。
01-11 01:28:37.248 30667-30667/madebyhangar.valletta2018 D/TST: Before Firebase (before retrieval starts)
01-11 01:28:41.245 30667-30667/madebyhangar.valletta2018 D/TST: After Firebase (first retrieval finished)
01-11 01:28:41.350 30667-30667/madebyhangar.valletta2018 D/TST: SECOND PROCESS: After Firebase (second retrieval finished)