Search

강사님과의 미팅

참가자
전원
날짜
2023/09/04
회의 주제
강사님 미팅

질문

firebase realtimedatabase에 user address를 저장 시,

방법1: 하위에 object로 다 넣기
"users": [ "userID1": { "nickname":"닉네임", "addresses": [ "unique_address_id_1": { "fullName": "John Doe", "streetAddress": "123 Main St", "city": "Cityville", "postalCode": "12345", "stateProvince": "State", "country": "Country", "phoneNumber": "123-456-7890" }, "unique_address_id_2":{ "fullName": "Jane Smith", "streetAddress": "456 Elm St", "city": "Townsville", "postalCode": "54321", "stateProvince": "Province", "country": "Country", "phoneNumber": "987-654-3210" } ] }, "userID2": { "nickname":"닉네임2", "addresses": [ "unique_address_id_1": { "fullName": "John Doe", "streetAddress": "123 Main St", "city": "Cityville", "postalCode": "12345", "stateProvince": "State", "country": "Country", "phoneNumber": "123-456-7890" }, "unique_address_id_2":{ "fullName": "Jane Smith", "streetAddress": "456 Elm St", "city": "Townsville", "postalCode": "54321", "stateProvince": "Province", "country": "Country", "phoneNumber": "987-654-3210" } ] }, ]
Kotlin
복사
방법2: 테이블 분리해서 key로 참조
"addressList": [ { "addressID": "unique_address_id_1", "fullName": "John Doe", "streetAddress": "123 Main St", "city": "Cityville", "postalCode": "12345", "stateProvince": "State", "country": "Country", "phoneNumber": "123-456-7890" }, { "addressID": "unique_address_id_2", "fullName": "Jane Smith", "streetAddress": "456 Elm St", "city": "Townsville", "postalCode": "54321", "stateProvince": "Province", "country": "Country", "phoneNumber": "987-654-3210" } ]
"users": [ "userID1": { "nickname":"닉네임", "addressList": [ "fsdfs23242", "dfsdfsdfghkjkl2222" ], }, "userID2": { "nickname":"닉네임2", "addressList": [ "fsdfs23242", "dfsdfsdfghkjkl2222" ], }, ... ] "addresses":[ "fsdfs23242":{ "fullName": "John Doe", "streetAddress": "123 Main St", "city": "Cityville", "postalCode": "12345", "stateProvince": "State", "country": "Country", "phoneNumber": "123-456-7890" }, "dfsdfsdfghkjkl2222":{ "fullName": "John Doe", "streetAddress": "123 Main St", "city": "Cityville", "postalCode": "12345", "stateProvince": "State", "country": "Country", "phoneNumber": "123-456-7890" }, ]
Kotlin
복사
어떤 방법이 더 낫나요?

실제 시중 앱은 버벅거리지 않는데,

우리가 만든 앱은 버벅거리더라. fragment가 생성될 때 정보를 불러오거나, image를 세팅해서 그런가?
버벅거리지 않게 하려면 앱이 처음 시작될 때 모든 걸 불러와야 하나? 아니면 액티비티가 시작될 때 불러와놓고, fragment들은 activity에서 정보를 갖다쓰면 되나?
답변
화면을 일단 보여주고, 스레드로 이미지를 불러와서 불러와지면 보여주기
map “이름”:객체 → 객체가없으면 불러오기, 있으면 있는 객체 보여주기
이미지는 용량 줄여서 서버에 저장시켜두기, 보관하고 있는 이미지는 최대한 적게
강사님의 방식 - 바텀nav 탭마다 맵 하나, 맵은 액티비티에 두기, 다른 탭의 정보들을 미리 스레드로 받아두기
게시글 같은 것도 맵에 저장해뒀다가 새로운 것만 새로 불러오기

피드백

기획서에 멍메이트 비즈니스 모델 추가하기 - 사람들이 앱을 이용하게 하는 동기부여
이름 다시 생각하기
주제가 있는 산책 아이디어 ex) 벚꽃 산책, 강아지와 러닝, 야간 산책
활동으로 확대 아이디어 ex) 미용 같이하러 갈 사람 구해요
강사님의 사례를 기획서에 끼워넣어도 됨 ex)
귀여운 ui로 만들면 좋을 듯

이미지 로딩 속도 개선 방안

1.
원본이미지에서 크기, 화질을 줄인 썸네일 이미지를 추가로 서버에 저장한다.
a.
image.jpg, image_thumbnail.jpg
b.
스마트폰 화면은 작기 때문에 고화질 이미지를 목록에 표시할 필요X
c.
화면에 RecyclerView로 표시할 때는 thumnail 이미지를 표시하고 실제 상세 페이지에서는 고화질 원본 이미지를 표시한다.
2.
앱에서 필요한 데이터를 미리 서버로 부터 내려받은 후 Map<String, Bitmap>에 저장한다.
a.
key : 파일명 / value : 이미지 비트맵 객체
b.
Map에 특정 key 파일명이 이미 존재할 경우 value에 담긴 Bitmap객체 꺼내서 사용
c.
Map에 특정 key 파일명이 존재하지 않을 경우 서버로부터 이미지 새로 내려받기