본문 바로가기

분류 전체보기

(222)
미디어 스토어 사진 가져오는 쿼리 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) }
Reactive Programming, Rx 개념 Reactive Programming 비동기적 데이터 흐름을 처리하는 프로그래밍 Asynchronous Dataflow Programming 이라고도 불리운다. 핵심은 비동기적인 데이터의 Stream으로 간주하고, Observer 디자인 패턴을 활용해서 비동기 이벤트를 처리한다. Reactive Programming은 실시간으로 반응을 하는 프로그래밍 Imperative Programming(명령형 프로그래밍)과 대비되는 개념이다. 예를 들어서 a = b + c 라고 했을 때, 명령형 프로그래밍에서는 a 는 b + c 연산의 결과물이 되며 b와 c의 값이 바뀌어도 재연산 명령이 들어오지 않는 한 a값은 그대로이지만 Reactive Programming에서는 b와 c의 값이 변할 때마다 a값이 바뀐다. 요..
[공유] 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 을 경험한 바로..