Lag With Asynctask When Load Data From Firebase
I'm trying to use asink task to download the data from the background firebase and use them to create a non-proprietary firebase recyclerview. However, lags after the postexecute r
Solution 1:
You should use AyncTask inside the onDataChange() method. You only need to do the processing part in the background thread after you get the data from onDataChanged. Try
final DatabaseReference mPostReference = FirebaseDatabase.getInstance()
.getReference().child("user-profile");
mPostReference.addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
new LongOperation().execute(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
private class LongOperation extends AsyncTask<DataSnapshot, Void, String> {
@Override
protected String doInBackground(DataSnapshot... params) {
for (DataSnapshot data : params[0].getChildren()){
final FriendItem friendItem = data.getValue(FriendItem.class);
//final String friendItem2 = data.getKey();
username.add(friendItem);
//uid.add(friendItem2);
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
adapter = new FriendHoldAdapter3(getContext(), username, uid, url);
//adapter.setClickListener(FriendActivity3.this);
recyclerView.setAdapter(adapter);
/**
adapter = new FriendHoldAdapter2(FriendActivity2.this, username, uid);
adapter.setClickListener(FriendActivity2.this);
recyclerView.setAdapter(adapter);
**/
final List<FriendItem> filteredModelList = filter(username, " ");
adapter.setFilter(filteredModelList);
Toast.makeText(getContext(), "Post execute", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {
username = new ArrayList<>();
uid = new ArrayList<String>();
url = new ArrayList<String>();
}
@Override
protected void onProgressUpdate(Void... values) {}
}
Post a Comment for "Lag With Asynctask When Load Data From Firebase"