컴퓨터 공학/Android (8) 썸네일형 리스트형 Weak, Soft, Strong Reference Strong > Soft > Weak Strong Reference Strong Reference는 new를 이용해 생성된 객체를 말합니다. 이 객체는 GC에서 무조건 제외되기 때문에 메모리 누수(Memory Leak)을 방지하기 위해서는 이 참조를 주의해서 보아야 합니다. 이 참조를 지워주지 않으면 GC에 의해 수거되지 않고 남아있기 때문에 메모리 누수를 유발할 수 있습니다. Soft Reference SoftReference는 다음과 같이 객체에 Reference를 넘겨줌으로서 생성할 수 있습니다. SoftReference object = new SoftReference(new Object()); 이 참조는 메모리가 충분하다면 GC에 의해서 수거되지 않고, 메모리에 여유가 없다면 GC에 의해 수거됩니.. DP, SP, PT, PX, IN, MM 안드로이드 리소스 크기 https://developer.android.com/guide/topics/resources/more-resources#Dimension 크기 XML로 정의된 크기 값입니다. 크기는 숫자로 지정되며 그 뒤에 측정 단위가 뒤따릅니다. 예: 10px, 2in, 5sp. 다음은 Android에서 지원하는 측정 단위입니다. dp 밀도 독립형 픽셀 - 화면의 물리적인 밀도에 기반한 추상적인 단위입니다. 이 단위는 160dpi(인치당 도트 수) 화면에 상대적이며 화면에서 1dp는 대략 1px와 같습니다. 더 높은 밀도의 화면에서 실행한다면 1dp를 그리는 데 사용되는 픽셀의 수는 화면의 dpi에 적절한 배율로 확장됩니다. 마찬가지로 더 낮은 밀도 화면에서 실행한다면 1dp에 사용되는 픽셀 수는 축소됩니다. dp .. Parcelable vs Serializable, 안드로이드 직렬화 Parcelable, Serializable은 안드로이드에서 액티비티 간 복잡한 클래스를 전달할 때 사용되는 인터페이스다. Serializable Parcelable reflection O X 사용편의성 따로 구현할 메소드가 없음 (Marker interface) 구현해야하는 필수 메소드가 존재 단점 시스템적 비용 존재 구현과 유지보수에 사용자의 노력이 필요 interface 표준 Java interface Android SDK interface 속도 특정 method (writeObject, readObject, readObjectNoData)를 커스텀한 Serializable > Parcelable (default) > Serializable (default) Android 이미지 로딩 라이브러리 워크플로우 https://d2.naver.com/helloworld/429368 이미지 전처리: 이미지를 로딩하기 전에 섬네일이나 진행 상황을 보여 주기 위한 단계 이미지 로딩: 캐시나 네트워크에서 이미지를 가져오는 단계 디코딩: BitmapFactory를 이용하여 이미지를 비트맵 형식으로 변환하고 크기, 회전, 품질 등을 변환하는 단계 이미지 후처리: 보여 줄 이미지에 애니메이션이나 모서리를 둥글게 하는 등의 효과를 적용하는 단계. 보여 주기: UI 스레드에서 이미지를 보여 주는 단계 라이브러리에 따라 세부 단계는 조금씩 다를 수 있다. Glide Picasso Bitmap Format RGB_565 ARGB_8888 이미지 로딩 ImageView의 크기로 메모리 로드 원본 이미지를 가져온 후 GPU에서 실시간 .. RecyclerView Adapter의 확장버전 ListAdapter 예시 Android Docs에 따르면 It is RecyclerView.Adapter base class for presenting List data in a RecyclerView, including computing diffs between Lists on a background thread. 백그라운드 스레드에서 리스트간의 차이를 계산해주는 RecyclerView.Adapter를 바탕으로 하는 클래스이다. class HomeMemoAdapter: ListAdapter(object : DiffUtil.ItemCallback(){ override fun areItemsTheSame(oldItem: Memo, newItem: Memo): Boolean = oldItem == newItem override fu.. BottomSheetDialogFragment를 Fullscreen으로 보이기 아래와 같이 BottomSheetDialogFragment의 onStart() 함수를 override하여 BottomSheetDialogFragment.show()와 동시에 Fullscreen 상태로 보이도록 만들 수 있다. override fun onStart() { super.onStart() if (dialog != null) { val bottomSheet: View = dialog!!.findViewById(R.id.design_bottom_sheet) bottomSheet.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT } val view = view view!!.post{ val parent = view!!.parent as View v.. 안드로이드 라이브러리 배포하기 jCenter, bintray 다음과 같은 방법으로 나만의 라이브러리를 쉽게 만들 수 있었다. 1. bintray 가입 https://bintray.com/ 2. bintray view profile에서 maven repository 생성 repository 이름을 maven으로 해주는 것을 추천본인 같은 경우 오류 발생 웹 페이지에서 할 일은 끝 3. Android Studio에서 Project 수준 gradle에서 dependencies 추가 dependencies { classpath 'com.android.tools.build:gradle:3.3.1' classpath 'com.novoda:bintray-release:0.9' } ext{ libVersionCode = 1 libVersionName = '0.0.3-alpha0.. 안드로이드 Firebase Crashlytics 적용 오류 org.gradle.api.resources.ResourceException: Could not get resource 'https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measurement-connector-impl/17.0.5/firebase-measurement-connector-impl-17.0.5-javadoc.jar' 위와 같은 오류가 발생할 경우gradle/wrapper/gradle-wrapper.properties에서 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip 을distributionUrl=https\://servi.. 이전 1 다음