2017-12-02 1 views
0

Ich habe eine Schaltfläche senden, die in einem Textfeld eingegebene Wörter in ein Chat-Fenster sendet. Wenn ich auf die Schaltfläche "Senden" klicke, möchte ich das in der Textbox eingegebene Wort an den Firebase-Server senden. aber wenn ich das tue, friert mein Textkasten ein und bleibt für ein paar Sekunden stehen. Ich verstehe, dass Firebase bereits asynchron ist, und ich habe auch versucht, Firebase-Aufrufe in Asycastask, aber kein Glück zu wickeln. Bitte sehen Sie sich die folgenden Code-Schnipsel an. Es gibt kein Update nach Firebase-Aufrufen. Hilfe bitteUI Verzögerung wegen Firebase-Datenbank-Aufruf

sendbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       avaliblemeg = message.getText().toString(); 
       // ChatMessage name= new ChatMessage(avaliblemeg,"0"); 


       ChatMessage film = new ChatMessage(); 
       // Here we set the film name and star name attribute for a film in one loop 
       film.setMessageText(avaliblemeg); 
       film.setMsgDirection("0"); 

       // Pass the Film object to the array of Film objects 
       messageview.add(film); 
       message_adapter.notifyDataSetChanged(); 
       message.setText(""); 
       long time = new Date().getTime(); 
       mDatabase.child("users").child(login_udid).child("Conversation_person").child(uid).setValue(new ChatModel(username,profile, uid, email,"No",avaliblemeg,"0",time)); 
       mDatabase.child("users").child(uid).child("Conversation_person").child(login_udid).setValue(new ChatModel(loginperson_name,login_profile,login_udid,login_email,"yes",avaliblemeg,"1",time)); 
       mDatabase.child("users").child(login_udid).child("Chat").child(uid).child("ChatList").push().setValue(new ChatMessage(avaliblemeg,"0")); 
       mDatabase.child("users").child(uid).child("Chat").child(login_udid).child("ChatList").push().setValue(new ChatMessage(avaliblemeg,"1")); 

       //new SendMessageTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
      } 
     }); 

// Informationen finden Sie unter meinem async Aufgabe Code hier, dass auch nur knapp sein Ziel Hilfe von Textfeld wegzukommen und Bildschirm einfrieren

private class SendMessageTask extends AsyncTask<Void, Integer, Void> { 
     long time= new Date().getTime(); 

     @Override 
     protected Void doInBackground(Void... params) { 

     DatabaseReference d1= FirebaseDatabase.getInstance().getReference(); 
      d1.child("users").child(login_udid).child("Conversation_person").child(uid).setValue(new ChatModel(username,profile, uid, email,"No",avaliblemeg,"0",time)); 
      d1.child("users").child(uid).child("Conversation_person").child(login_udid).setValue(new ChatModel(loginperson_name,login_profile,login_udid,login_email,"yes",avaliblemeg,"1",time)); 
      d1.child("users").child(login_udid).child("Chat").child(uid).child("ChatList").push().setValue(new ChatMessage(avaliblemeg,"0")); 
      d1.child("users").child(uid).child("Chat").child(login_udid).child("ChatList").push().setValue(new ChatMessage(avaliblemeg,"1")); 

      return null; 
     } 
} 

Antwort

0

Die Ursache ist nicht die Firebase Anfrage , Sie benötigen nicht einmal die AsyncTask, da Firebase ihre Anforderungen automatisch im Hintergrundthread ausführt. Sie müssen nach einer anderen Ursache suchen.

Verwandte Themen