본문 바로가기

Study/Android

(73)
미디어 스토어 사진 가져오는 쿼리 private Cursor getImageMediaCursor(Context context, int nSort, int limit, int offset) { Cursor mPictureCursor; String[] proj = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_MODIFIED, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.SIZE, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.MIME_TYPE }; if(Build.VERSION.SDK_INT >= Bu..
앱 서명 jks -> pepk 앱 서명 jks -> pepk 1. Build -> Generate Signed Bundle of APK -> Android App Bundle 체크 -> Next 기존 키스토어가 만들어져 있다면 Export encrypted key for enrolling published apps in Google Play App Signing 체크해서 *.pepk 만들어 준다. 2. 플레이스토어 설정 -> 앱 무결성 -> Android 스튜디오의 키 내보내기 및 업로드 1에서 내보낸 키 *.pepk 를 ‘비공개 키 업로드’에서 업로드 3. *.aab 파일 업로드
CoroutineScope Network Example import android.util.Log import kotlinx.coroutines.* /** * async task -> coroutine scope * * @param Result * @constructor Create empty Coroutine task async */ abstract class CoroutineTaskAsync { private var coroutineScope: CoroutineScope? = null open fun execute() { coroutineScope?.cancel() coroutineScope = MainScope() coroutineScope?.launch(errorHandler) { onReady() try { val defer = async(Dispa..
Kotlin SingleTon with Fragment Fragment instance 선언하는 부분을 어떻게 더 줄일 수 있을까 찾아보다가 발견 build.gradle 추가 implementation 'androidx.core:core-ktx:1.6.0' Instance open class open class Instance(private val cls: Class) { fun newInstance(vararg args : Pair) : T { return cls.newInstance().apply { arguments = bundleOf(*args) } } } Fragment에서 사용 방법 class TestFragment : Fragment() { companion object : Instance (TestFragment::class.java) }
[공유] RecycleView Animation https://github.com/wasabeef/recyclerview-animators GitHub - wasabeef/recyclerview-animators: An Android Animation library which easily add itemanimator to RecyclerView items. An Android Animation library which easily add itemanimator to RecyclerView items. - GitHub - wasabeef/recyclerview-animators: An Android Animation library which easily add itemanimator to RecyclerV... github.com https://git..
DataBinding 자주 사용하는 AAC 이긴 하지만 남에게 설명할 수 없을 때, 완벽하게 이해하지 못한 것이라는 말을 생각하여 정리하게 되었다. 안드로이드에서 DataBinding 이란? 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리이다. Android Jetpack 중 구성요소이기도 하다. 예전에는 ButterKnife 라이브러리가 있었지만 어느 순간 사라지고 Databinding만 남았다. (그리고 난 괜히 소스 라인만 많아지는 것 같아서 ButterKnife 쓰기가 너무 싫었다.) 아래 링크를 보면 너무나도 설명을 잘 해주고 있다. https://developer.android.com/topic/libraries/data-binding 데이터..
ANR(Application Not Responding) ANR 개발하다보면 마주하게 되는 '애플리케이션 응답 없음' 창, 바로 강제종료 창 안드로이드에서는 일정 시간 동안 응답하지 애플리케이션이 있으면 앱의 응답이 멈추었다고 알리는 대화상자를 표시한다. ANR 발생 이유 대표적으로 ANR 발생하는 이유는 다음과 같다. 애플리케이션이 UI스레드에 어떠한 I/O 명령으로 인해 막힐 때 너무 많은 시간을 정교한 메모리 구조를 구축하는데 들일 때 Input 이벤트(키를 누르거나 화면을 터치하는 등)가 5초 안에 반응하지 않을 때 BroadcastReceiver가 10초 내로 실행을 끝내지 않을 때(UI가 없는 BroadcastReceiver, 서비스도 실행 주체가 된 Main Thread이므로 긴 시간을 소모하는 작업인 경우) 솔직히 이제까지 ANR 을 경험한 바로..
Dagger2 DaggerAppComponent Not Found AppComponent 를 알맞게 입력했어도 자꾸 DaggerAppComponent 를 찾을 수 없다고 떴다.. dagger 라이브러리 적용 방식도 똑같이 했는데도 말이다. rn 결국 찾아냄 1. 수정 전 build.gradle def daggerVersion = 2.27 implementation "com.google.dagger:dagger:$daggerVersion" kapt "com.google.dagger:dagger-compiler:$daggerVersion" implementation "com.google.dagger:dagger-android:2.35.1" kapt "com.google.dagger:dagger-android-processor:$daggerVersion" implementa..