0

我開發一個聊天應用程序一樣WhatsApp的,但我在誰註冊了我的應用程序,誰是在聯繫人列表中獲取的用戶越來越問題...註冊用戶檢索在火力聊天應用

我的數據庫:

chat 
    users 
    -TnBhKlDUWhZZtnXjqJPwybCXs043 
     name:prem jangir 
     phone:+9180947729xx; 
     avatar:htpp://... 
    -TjjfdldlvllUdffkgjfkkfkkgkfk 
    . 
    . 

我的代碼:

ArrayList<Contacts> allContact = new ArrayList<>(); 
    DatabaseReference mDatabase; 
    RecyclerView allUserRecycle; 
    ArrayList<Users> allUsers =new ArrayList<>(); 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_all_users); 

     mDatabase = FirebaseDatabase.getInstance().getReference().child("users"); 

     while (i <= allContact.size()-1) { 
       Contacts contact = allContact.get(i); 
       String phone = contact.phone; 
       retrieveUsers(phone); 
       i++; 
      } 
    } 

public void retrieveUsers(String phone) { 
     Query mQuery=mDatabase.orderByChild("phone").equalTo(phone).limitToFirst(1); 

     if(FirebaseDatabase.getInstance()!=null) 
     FirebaseDatabase.getInstance().goOffline(); 
     FirebaseDatabase.getInstance().goOnline(); 
     assert mQuery != null; 
     mQuery.addChildEventListener(new ChildEventListener() { 
      @Override 
      public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

       Users u= dataSnapshot.getValue(Users.class); 
       if(u!=null) 
        Log.e("test",u.name); 
       allUsers.add(u); 
      } 

我已經檢索到的所有聯繫t從聯繫人列表中並存儲在allContact ArrayList中。 這段代碼花費很多時間來顯示recycleview數據.... 是它做的正確的方式或有任何其他方式做正確 好心幫

回答

1

解決你的問題,你需要刪除此代碼行數:

FirebaseDatabase.getInstance().goOffline(); 
FirebaseDatabase.getInstance().goOnline(); 

您不需要離線,然後上線。這會降低在RecycleView中顯示數據的速度。當你肌酸新的FirebaseDatabase參考,你已經連接。所以,沒有必要使用這些方法。

希望它有幫助。

+0

是所有其他代碼是否正確? –

+0

你的代碼很好。現在是提高你的速度? –

+0

是的,我的工作 –