본문 바로가기

전체 글100

[안드로이드 코틀린] leakcanary(리크카나리)를 써보자 어제 profiler로 메모리 리크를 해결하기 위해 삽질을 했지만 실패했다.의심가던 전역변수를 모두 없앴는데도 리크가 일어나는 것이다.... 뭔가 내가 놓치고 있는게 있나해서 이거 뭐지하다가 튜터님한테 도움을 청하러 갔다. 리크카나리라는 라이브러리가 메모리 리크를 잡는데 좋다고 추천해주셨다. 맵 프래그먼트인거는 알겠는데 그래서 어디가 잘못됐는데?란 상황에 봉착했을 때, 조금 더 자세하게 문제의 원인을 특정해줄 수 있다고 한다. 리크 카나리를 써보자. 우선 빌드 그래들에 추가한다. dependencies { debugImplementation ("com.squareup.leakcanary:leakcanary-android:3.0-alpha-1") } 디버그임플레이션?은 뭐지 했는데 종류를 찾아보니 여러가지.. 2024. 3. 26.
[안드로이드 코틀린] profier를 사용하여 메모리 리크를 해결해보자 정확히 어디에서 나오는지는 모르겠지만 메모리 리크를 계속 일으키는 오류가 있어서 그동안 이런 기능이 있다~ 정도로 알고 있던 profiler를 사용해보았다. 사용법은 간단하다. 해결법이 어려울 뿐..... 먼저 앱을 실행한다 왼쪽에 속도계기판 같은 아이콘을 클릭한다. 그러면 위와 같은 화면이 뜬다. 위 화면은 이미 연결한 것이고 처음 키면 아무것도 없는 빈칸일텐데 + 아이콘을 클릭하고 기기를 선택하고 앱을 선택하면 된다. profiler화면 에서 memory 즉 파란색 그래프를 클릭하면 아래 화면이 뜰 것이다. 이 상태에서 메모리 리크가 의심되는 부분을 반복해서 실행해보자. 중간중간에 위에 화면에 보이는 쓰레기통 아이콘을 클릭해주자. 강제로 가비지콜렉션을 실행시키는 버튼인데 관계없는 메모리가 잡히는 걸 .. 2024. 3. 25.
[코틀린] 네이버지도 연동하기 원래 계획은 카카오지도 네이버지도 티맵 같은 여러 가지 지도앱 중에서 선택해서 목적지까지 자동으로 연결할 수 있게 해주려고 했었다. 그런데 각 앱마다 url이 달라서 하나를 돌려쓰는 것은 불가능했다. 그럼 각각의 앱마다 따로 써야하는데 시간이 안될 거 같아서 할 수 없었다. 결국 타협한 게 아래의 코드다.... 네이버지도만 설치되었는지 검사하고 네이버지도가 있다면 네이버 지도에서 목적지를 검색하고, 네이버 지도가 설치되지 않았다면 네이버의 빠른길찾기 서비스에다가 목적지를 넣어준다. private fun openMap( endLat: Double, endlon: Double, name: String? ) { //네이버지도앱으로 보내는 링크, 앱마다 다르므로 레퍼런스를 참고하자. val url = "nmap.. 2024. 3. 21.
[코틀린] intent 변수들 모음 정리 https://developer.android.com/reference/android/content/Intent.html Intent | Android Developers developer.android.com 위에는 안드로이드의 인텐트에 관한 레퍼런스이다. 인텐트(Intent)는 컴포넌트에 액션, 데이터 등을 전달하는 메시지 객체이다. 인텐트 객체의 구성 요소는 다음과 같다. 정리 Intent 객체의 구성 요소 ▶ Action(액션): 수행할 액션 이름(ACTION_DIAL) ▶ Data(데이터): 수행할 데이터의 URI(tel:) ▶ Category(카테고리): 수행할 액션에 대한 추가적인 정보 ▶ Type(타입): 수행할 인텐트 데이터의 명시적인 타입(MIME 타입)(video/mpeg) ▶ Com.. 2024. 3. 21.
[코틀린] 네이버 맵 API , TedNaverClustering 적용 구글맵에서는 클러스터링을 지원한다는데 모바일 네이버맵 api에서는 클러스터링을 지원하지 않는다... 있을법도 한데 없다는 게 놀라울 따름이다. 그래서 어떻게 클러스터를 하나 검색해보니 누군가 만들어놓은 라이브러리가 있어서 옳다구나! 하고 적용했다. 그런데 깃헙에 가서 해당 라이브러리를 봐도 설명이 너무나도 부족하다... 그래도 있는 게 어딘가? 사용해본 코드. 완전한 코드는 아니고 일부 발췌. private var tedNaverClustering: TedNaverClustering? = null private var naverMap: NaverMap? = null override fun onMapReady(p0: NaverMap) { tedNaverClustering = TedNaverClusterin.. 2024. 3. 18.
[코틀린] 뷰페이저2 안에 맵뷰에서 좌우 스와이프가 안먹힐 때 (커스텀 맵뷰) 내가 한 결과물은 아니고 다른 팀원과 네이버 맵 api를 쓰는 게 겹쳐서 해결법을 모색하다가 알아낸 방법이다. 뷰페이저는 좌우로 스크롤을 할 수 있는데 뷰페이저 안에 있는 페이지에 맵뷰를 쓸 경우 좌우로 스와이프를 하면 맵뷰가 움직이는 게 아니라 화면이 넘어가버리는 문제가 있었다. 혹여나 같은 문제를 겪는 분에게 참고가 될까해서 공유한다. 영상으로 보면 이해가 빠를 것이다. 커스텀 맵뷰를 사용하는 방법이다. class ScrollAwareMapView : MapView { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) construc.. 2024. 3. 14.
[코틀린] 네이버 맵 api 마커 찍기 (보이는 곳만 나오게 ) 네이버맵을 사용하다보니 마커를 여러개 찍으면 렉이 걸린다. 보이는 곳만 나오게 하면 렉이 줄을 거 같은데.... 혹시나 나랑 같은 생각을 한 사람이 있을까 싶어서 검색해보니 있었다. override fun onMapReady(p0: NaverMap) { naverMap?.addOnCameraIdleListener { //카메라의 이동이 끝났을 때 updateMarkers(naverMap!!,markers) } } fun showMarker(marker: Marker, naverMap : NaverMap) { marker.map = naverMap } fun hideMarker(marker: Marker) { marker.map = null } fun updateMarkers(naverMap: NaverM.. 2024. 3. 14.
[코틀린] navermap 지도 영역 제한 ( 국내 영역으로 제한하기) 지도 영역을 제한하는 법은 api 가이드에 친절하게 나와있지만 막상 검색할라면 어디에 붙어있는지 일일히 찾아봐야 한다. naverMap?.minZoom = 6.0 naverMap?.maxZoom = 18.0 naverMap?.extent = LatLngBounds(LatLng(32.973077, 124.270981), LatLng(38.856197,130.051725 )) 캠핑앱을 하기 위해 네이버맵에 국내영역만 잡혀야 하는데 아무 설정도 안하니 전세계까지 맵을 축소할 수 있다.... 남한 영역만 잡히게 하려면 위에 처럼 설정하면 된다 . LatLngBounds에 들어가는 좌표는 우측 상단 꼭지점과 좌측 하단 꼭지점을 기준으로 한다. 2024. 3. 11.
[git] 특정 파일 잘못 올린 상태로 커밋했을 때, git에서 특정 파일 제거하는 방법 용량이 큰 exe 파일을 넣어둔 걸 깜빡하고 커밋해서 push할 때마다 용량제한에 걸렸다. 로컬에서 exe파일을 삭제했음에도 불구하고 깃 내부에서 기록이 남아있는지 exe파일을 계속 푸쉬하려고 하면서 용량 초과 메시지를 띄운다. 파일 제거 git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 파일명' --prune-empty --tag-name-filter cat -- --all 경로 존재하면 경로+파일명 ex) root/src/components/PostsButtons.js git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch /src/c.. 2024. 2. 29.