0
テキストボックスに入力された単語をチャットウィンドウに送信する送信ボタンがあります。送信ボタンをクリックすると、textbxに入力された単語をfirebaseサーバーに送信します。しかし、私がそうするとき、私のテキストボックスは数秒間フリーズして遅れます。私はfirebaseが既に非同期であることを理解し、asyctaskでfirebase呼び出しをラップしようとしましたが、運はありません。以下のcode.fyiのスニペットを参照してください、firebase呼び出しの後にuiの更新はありません。詳細については、ヘルプしてくださいfirebaseデータベースコールによるUIの遅れ
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);
}
});
//、また
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;
}
}