분류 전체보기(80)
-
Android useful kickass tools
Stetho오픈소스 디버깅 플랫폼페이스북에서 개발했음Chrome의 개발자 도구 이용네이티브 android 앱을 디버깅할 수 있도록 해줌트리 구조 확인SQLite DB검사네트워크 작업 모니터링 등 지원 Android Assets StudioAndroid 아이콘 및 애니메이션 생성기 LeakCanarySquare에서 개발한 강력한 메모리 누수 감지 도구메모리 누수 발생할 때마다 전체 스택 추적알림 제공 DryRunAndroid 라이브러리 테스팅 도구라이브러리 시험해보는데 아주아주 좋음! Slides Code Highlighter코드 스니펫 예쁘게 만들어서 보여주는 친구~ Takt디버깅 하는 동안 다양한 기능의 FPS를 확인해줌버그와 지연을 포착해줌유저 사용성 개선 Drawable OptimizerImage ..
2023.08.08 -
Dialog With Navigation
Dialog는 Navigation으로 연결할 수 있다!Dialog도 결국 흐름에 연결된 화면이기때문~ Dialog Fragment를 만들고class MyDialog : BottomSheetDialogFragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.my_dialog, container, false) } } 팔레트에서 DialogFragment로 연결인데… 요렇게 들어오면 안된다…Dialog기 때문에 Dialog로 들어와야됨. 코드 좀 고쳐줌< dialog android:..
2023.08.08 -
__**Using String Resources in a ViewModel**__
모든 개발자들의 숙명 지속가능한…코드.. class MainViewModel (application: Application) : AndroidViewModel(application) { fun getString () : String? { return getApplication().resources.getString(R.string.sample_string) } }다음과 같은 방식에는 문제가 있다. 뷰모델은 주로 상태와 동작을 관리하지만 String등의 리소스는 view 계층에 속하기때문 → 관심사 분리가 제대로 안 됨단위 테스트 어려움 → context를 사용하므로.. 뷰모델의 단위 테스트가 어려워짐이전 데이터를 표시할 가능성 → 뷰모델은 한 번만 생성되기때문에, string 값 등이 변경되면 이전 데이..
2023.08.08 -
Recyclerview Payload
Payload란?→ Recyclerview에 태워보내는 데이터Recyclerview를 일부만 업데이트할때 사용됨전체를 리로드하는 리소스 낭비 notify들을 방지하기 위함 사용방법override fun onBindViewHolder(holder: ItemViewHolder, position: Int, payloads: MutableList) { if (payloads.isEmpty()) { super.onBindViewHolder(holder, position, payloads) } else { if (payloads[0] == true) { holder.bindFavoriteState(getItem(position).isFavorite) } } } }override fun getChangePayload..
2023.07.28 -
Connectivity Manager
Connectivity Manager란Android 시스템 서비스네트워크 연결 상태에 대한 쿼리에 응답하는 클래스. 네트워크 연결이 변경되면 app에 알린다. 역할네트워크 연결 모니터링(WIFI, GPRS, UMTS)네트워크 연결 변경시 broadcast intent 전송네트워크 연결 끊긴 경우 페일 오버 시도앱이 사용 가능한 네트워크의 대략적 혹은 세분화된 상태를 쿼리하는 API제공App이 데이터 트래픽에 대한 네트워크를 요청하고 선택할 수 있도록 API 제공 클래스 얻기val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager 콜백voidonAvailable(Network network) 프레임워크가 연결되고 사용할 준비가 된 새 네..
2023.07.28 -
Retrofit to Ktor
ktor을 써야하는 이유 💡KMM을 사용해서 앱을 만든다고 생각해보자. ios에서는 java/android 기반인 Retrofit을 사용할 수 없다 .근데 ktor은 되는 모양…?아래와 같이 종속성을 추가해줍시다plugins { ... kotlin("plugin.serialization") version "1.7.10" ... } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") implementation("io.ktor:ktor-client-core:$ktorVersion") // CIO - for JVM and Android implementation("io.ktor:ktor-client-cio..
2023.07.26