Android

Android/번역

코루틴을 뷰에 적용하기

해당 글은 아래 글의 번역본으로 오역이 있을 수 있다는 점 미리 공유드립니다. medium.com/androiddevelopers/suspending-over-views-19de9ebd7020 Suspending over Views How coroutines can make UI programming easier medium.com 코틀린의 코루틴은 비동기적인 문제들을 마치 동기적으로 처리할수 있도록 도와줍니다. 해당 방식으로 사용되는 것은 매우 좋습니다. 그러나 코루틴을 사용하는 대부분은 동시성의 작업들 혹은 I/O 작업에만 집중하여 처리되는 것 처럼 보입니다. 코루틴은 여러 스레드(멀티 스레드)를 오가며 문제를 해결할 수 있도록 모델링 되어 있습니다. 그러나 하나의 스레드에서도 비동기 문제를 해결할 ..

Android/번역

코루틴 플로우(Flow) 읽어보기

해당 글은 아래 글의 번역본 입니다. 오역이 있을 수 있으니, 코멘트 남겨주시면 감사합니다. kotlinlang.org/docs/flow.html#sequences Asynchronous Flow - Help | Kotlin kotlinlang.org Flows ? 순차적으로 값을 배출해서, 정상적으로 완료하거나 에러를 던지는 비동기 데이터 스트림 입니다. 일시중단할 수 있는 함수는(Suspending function) 비동기적으로 하나의 값을 반환합니다. 하지만 비동기적으로 계산되어진 값을 여러개를 어떻게 반환해야할까? 이때 Flow 를 사용해아합니다. 여러값 표현하기 - List 다양한 값들은 코틀린의 Collections 을 사용하여 표현될 수 있습니다. 예를 들어 우리는 3개의 숫자를 반환하는 리..

Android/번역

코틀린으로 알아보는 SOLID 원칙

해당글은 blog.berkberber.com/solid-principles-in-kotlin-4f37e9b62dde SOLID Principles in Kotlin In object-oriented computer programming, SOLID is design principles intended to make software more understandable, flexible and… blog.berkberber.com 의 번역본 입니다. (글쓴이가 화웨이에 다니고 있어서 그런지 화웨이 예제가 상당히 많네요) SOLID ? 객체 지향 프로그래밍에서 SOLID 원칙은 좀더 "이해가능한", "유연한", "유지보수 가능한" 소프트웨어를 만들기 위해 의도 되어진 디자인 원칙이다. SOLID 원칙은 기능 ..

Android/Today I Learned

테스트 케이스로 작성해보는 RxJava 함수

이제는 코루틴으로 인해, 사용빈도가 적어지는 자주 사용했던 Rx 함수들을 정리하는 시간을 가지려고합니다. 그리고 안녕... 제대로 동작하는 것을 확인하기 위해, 테스크 케이스로 작성하고 딱 20개만 해보려고합니다. 먼저 전체 코드를 링크 걸어두겠습니다 Single, Completable, Observable, Flowable, Maybe 의 목적과 특성은 이미 알고 있을 것이라고 가정하고, 위의 자료형과 상관없이 생각나는 함수 위주로 작성해보겠습니다. 1. Just 함수 /** * Single.just, SingleJust : Single 로 Wrapping 된 아이템을 한번 방출한다. * 특정 아이템을 Single 타입으로 변경하여 체이닝을 이어갈 때 사용하면 유용하겠다. * ex) flatMap 으로..

Android/Development Tips

DialogFragment 를 상속하는 다이얼로그에서 dismiss 할 때 Tips

// dialog 를 프로퍼티(멤버변수)로 선언했다고 가정 dialog?.dismiss() dialog = Dialog() dialog?.show(xxxFragmentManager, dialogTag) 위와 같은 코드가 있다. 대략적인 의미를 보면 1. dialog null 이 아니라면 dismiss 시키고 2. dialog 를 초기화 하고 3. 마지막으로 다이얼로그를 보여준다. 잘 작성한 코드로 다이얼로그가 중복으로 뜨는일은 없을 것 같이 느껴진다. 하지만 Configuration change(퍼미션 변경, 화면 변경, 언어 변경 등), OOM 가 일어나면 문제가 생기게 된다. 보통 안드로이드 이론 공부하면, Configuration change 가 일어나면 액티비티가 다시 시작되는 것을 우리는 알고 ..

Android/Development Tips

java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps 에러 수정하기

Context 와 Uri 를 사용하여, Bitmap 을 가져오는 함수가 deprecated 되어 Replacement 함수로 변경하고 나서 QA 중 에러가 발생했다. 아래와 같이 레거시 방법들을 사용하고 있었고 // (deprecated) BitmapDrawable(context.resources).bitmap // (deprecated) BitmapDrawable( context.resources, MediaStore.Images.Media.getBitmap(context.contentResolver, this) ).bitmap 사용했던 문제의 코드 ImageDecoder.decodeBitmap(ImageDecoder.createSource(context.contentResolver, this)) 에서..

Android/Development Tips

다양한 뷰타입을 가지는 Recyclerview 만들기

오랜만에 안드로이드 글을 작성하는 것 같습니다. 적당한 퍼포먼스를 가지는 리싸이클러뷰를 만들어 볼 예정입니다. 완성된 소스코드는 맨 아래 링크에 있습니다. 이번 포스팅은 Architecture 등은 제외하고, Recyclerview 구현에만 관심이 있습니다. 4개의 뷰타입을 가지는 리싸이클러뷰 디펜던시는 프로젝트 생성시 추가되어 있는 라이브러리 + Third party (Glide, Recyclerview) 입니다 네트워크에서 가져온다면 (Gson 등이 필요합니다) 먼저 보여줄 Data class 를 명세해줍니다. @Parcelize 어노테이션을 이용하여, 다른 Activity, Fragment 에 아이템을 전달할 일이 있을 때, 쉽게 처리할 수 있도록 추가하였습니다. @Parcelize data cla..

Android

Grab, Kakao T 같은 모빌리티 샘플 앱 구현하기

오랜만에 기회가 되어 모빌리티 앱은 어떤 식으로 구현이 될지 주변분들에게 자문하며, 샘플앱을 구현해봤습니다. 역시나 모바일에서 제공해주는 GPS_PROVIDER, NETWORK_PROVIDER 을 이용하여 코딩하는 것보다, 구글에서 제공해주는 FUSED_PROVIDER 를 사용하는 것이 더 수월하고 구현이 용이했습니다. 아쉽게도 구글 맵이 Driving mode 를 한국에서는 제공하지 않아 테스트 해볼 수 는 없었지만, Fake GPS 를 통해 외국에서는 잘 동작하는 것을 확인하였습니다. 이후에는 네이버, 다음등으로 구현해서 사용해봐야겠습니다. 프로젝트 설명 및 링크 https://github.com/Nanamare/GrabSample Nanamare/GrabSample Grab sample demo a..

Android/Development Tips

Clean Architecture (무비 앱)

몇몇 샘플을 보고 참고하여 간단하게, 영화 검색/추천 앱을 개발하였다. 아직 이해하지 못한 부분이 많아서 앞으로도 쭉 고칠예정 (리뷰나 코멘트도 부탁드립니다) 보일러 플레이트의 양은 늘지만, 확실히 관심사가 분리되는 것이 현업에 적용해보고싶은 욕심이든다. 코드 저장소

Nanamare
'Android' 카테고리의 글 목록 (6 Page)