마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 Firebase 스레드

0 추천
Firebase 에서 이미지 파일을 업로드 다운로드 할 때 스레드를 이용하려고 하는데,

 

Firebase 자체가 스레드 역할을 하는지 궁금합니다.
알파고 (4,320 포인트) 님이 2017년 9월 25일 질문

2개의 답변

+1 추천
 
채택된 답변
void sendImage(Bitmap bitmap){
    StorageReference riversRef = mStorageRef.child("DrawRoomBacks").child(back_key+".jpg");

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] data = baos.toByteArray();

    UploadTask uploadTask = riversRef.putBytes(data);
    uploadTask.addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            // Handle unsuccessful uploads
            Log.d("업로드실패","!");
        }
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @SuppressWarnings("VisibleForTests")
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
            Uri downloadUrl = taskSnapshot.getDownloadUrl();
            Log.d("URL : ", String.valueOf(downloadUrl));
            databaseReference.child("DrawRoomBacks").push().setValue(back_key);
        }
    });
}

 

저의 앱 코드중 일부입니다.

보시다시피 따로 UploadTask를 이용해서 업로드 합니다.

*아시겠지만 혹시나 말씀드립니다만, 파이어베이스에 이미지를 업로드할땐 실시간DB를 사용 할 수 없고, 저장소를 사용해야 합니다.

 

화푸리 (460 포인트) 님이 2017년 9월 26일 답변
알파고님이 2017년 9월 26일 채택됨
그러니까 UploadTask를 이용하면 Thread 가 없어도 된다는 말씀이신거죠??
넵 그렇습니다. UploadTask 자체가 스레드의 역할을 합니다.
0 추천
Firebase db를 써본지가 오래되서 기억이 가물가물 한데 따로 스레드처리를 해주어야 했던걸로 기억합니다.

간단하게 스레드처리하려면 RxFirebase도 추천해드립니다.

https://github.com/nmoskalenko/RxFirebase
minor (13,710 포인트) 님이 2017년 9월 26일 답변
...