-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
부산대 Android_이지은 4주차 1단계 #60
base: jieunyume
Are you sure you want to change the base?
부산대 Android_이지은 4주차 1단계 #60
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨어요 지은님!
마지막 위치를 저장하는 기능에서, SharedPreference에 데이터를 저장하는 코드를 onMapReady( ) 안에 구현했습니다. MapActivity의 생명주기 중 하나인 onPause( ) 안에 구현하는 것도 고려해봤는데요. 그러면 getCoordinates( ) 를 한번 더 호출하여 좌표 정보를 가져와야 할 것 같아서 비효율적일 거라고 생각했습니다. 그런데 지금 구현한 대로 실행하면 사용자가 위치를 선택했을 때마다 저장하게 되기도 합니다. 다른 방식이 또 있을지, 혹은 어떤 방식이 더 좋은지 궁금합니다!
음... 마지막 위치를 저장하는 것은 보통 화면을 이탈할 때 하는 경우가 대부분이에요. pause 나 stop 이 그런 위치이죠. 비효율을 산정하는 부분은 고민이 충분히 될 수 있어요. 다만 그것이 잘못 구현되는 것보다는 낫다는 생각이에요! 구현 후 개선을 하는 과정을 거치면서 비효율을 없앨 수 있다고 생각합니다 :)
여기에서 비효율은 많은 부분이 있을 수 있지만, 가장 큰 것은 ui thread 에서 너무 많은 작업을 하는 비효율일 것이에요. 그부분에 대해 초점을 맞춰서 개선해보시면 좋지 않을까 싶습니다.
val longitude: String, | ||
val latitude: String |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lat lng 는 double 이어도 되지 않을까요!?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드에서 위치 정보를 미리 변환하지 않고 실제로 사용할 때마다 변환하려고 했습니다! 근데 생각해보니까 그러면 여러 번 변환하는 경우가 생길 수 있으니까 더 비효율적일 수 있겠네요! 감사합니다~!
val title = getString(getColumnIndexOrThrow(LocationEntry.COLUMN_NAME_TITLE)) | ||
val address = getString(getColumnIndexOrThrow(LocationEntry.COLUMN_NAME_ADDRESS)) | ||
val category = getString(getColumnIndexOrThrow(LocationEntry.COLUMN_NAME_CATEGORY)) | ||
return Location(title, address, category, "", "") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
latitude longitude 는 없어도 될까요?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2주차 과제에서 쓰인 코드를 그대로 뒀었는데, 삭제하도록 하겠습니다!
@@ -43,19 +69,122 @@ class MapActivity : AppCompatActivity() { | |||
KakaoMapSdk.init(this, BuildConfig.KAKAO_API_KEY); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저번에 코멘트를 드리지 못한 부분이긴한데, sdk 의 initialize 는 activity 에서 하기보다 Application 에서 처리하기를 권장하고 있습니다! (kakao map 도 마찬가지네요!)
} | ||
|
||
private fun hideBottomSheet() { | ||
runOnUiThread { bottomSheetLayout.visibility = View.GONE } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onMapReady 가 혹시 ui thread 가 아닌 다른 스레드에서 처리하고 있나요?
runOnUiThread 는 꼭 필요한 경우에만 처리해주시는 것이 좋습니다!
var pref: SharedPreferences = getSharedPreferences(name, Activity.MODE_PRIVATE) | ||
var editor: SharedPreferences.Editor = pref.edit() | ||
editor.putString("longitude", coordinates.longitude.toString()) | ||
editor.putString("latitude", coordinates.latitude.toString()) | ||
editor.putString("title", coordinates.title.toString()) | ||
editor.putString("address", coordinates.address.toString()) | ||
editor.apply() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이렇게 정보를 가지고 오는 것은 data layer 에서 로직이 있는 것이 좋습니다. Repository 로 로직을 옮기고, ViewModel 을 통해서 데이터를 가져오는 것을 추천드립니다!
private val locationViewModel: LocationViewModel by lazy { | ||
ViewModelProvider(this, LocationViewModelFactory(locationRepository)) | ||
.get(LocationViewModel::class.java) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hilt 를 통해서 주입받는 것을 한번 공부해보시면 어떨까 싶어요! 의존성 주입에 대해서 공부해보셔도 좋구요!
어려웠던 점, 느낀점
중점적으로 봐주셨으면 하는 부분
실행 화면
1. 추가된 기능
default.mp4
2. 앱 종료 후 다시 실행
KakaoTalk_20240719_032822807.mp4
3. 지도 에러 화면