안드로이드 서비스 심층 분석

원문 : https://proandroiddev.com/deep-dive-into-android-services-4830b8c9a09 안드로이드 Service로 빠져 봅시다 소개 안드로이드에서 종종 백그라운드 실행이 필요한 작업을 수행해야합니다. 이럴경우 메인쓰레드가 아닌 서브쓰레드를 생성하여 사용하게 됩니다. 하지만 예기치 않은 결과가 발생할 수 있습니다. 예를들어 서브쓰레드를 수행한 뒤 액티비티 화면 회전 등으로 인해 onDestroy()가 호출되고,  서브 쓰레드의 작업이 끝났을 때 해당 Activity는 존재하지 않는 상태라면 UI갱신을 더보기…

글쓴이 Charlezz,

Navigation Component 특징 및 사용시 유의점

Navigation 컴포넌트를 쓰면 여러화면(Fragment)을 하나의 Activity로 묶어서 그래프라는 개념으로 관리하게 된다. (1 Activity – N Fragments) Fragment의 전환을 직접 FragmentManager를 통해 해줘야했지만, Navigation을 쓰게 되면 FragmentManager를 통한 화면 전환을 직접 할 필요가 없다. Up 과 Back 에 대한 액션을 네비게이션 컴포넌트에게 위임하게 된다. (기본적으로 사용자 친화적으로 매우 잘 동작한다)  기본적으로 더보기…

글쓴이 Charlezz,

매우 늦었지만 카메라 앱과 관련된 LG G5 특징

개발을 하다 보면 특정기기에서만 알수 없는 이유로 앱이 크래쉬가 나거나 오류가 발생하곤 한다. 원인을 파악하기 위해 파헤치다보면 간혹 프레임워크의 버그이거나 특정기기의 소프트웨어 문제이거나 아니면 내가 모르는 문제이다.  카메라와 관련된 앱을 개발하면서 알게된 G5 관련 이슈 2가지가 있다. 사진 저장 경로 문제 일반적으로 사진을 찍을 때 다음과 같이 인텐트를 구성해서 액티비티를 더보기…

글쓴이 Charlezz,

세로형 RecyclerView 안에 가로형 RecyclerView 구현할 때 스크롤이 잘 되지 않을때

스크롤이 잘 되지 않아요!! Vertical RecyclerView안에 Horizontal RecyclerView를 구현하는 경우 스크롤이 잘되지 않는 경우가 발생할 수 있습니다. 상위/하위 RecyclerView 상호간 터치이벤트 간섭으로 인해 원치 않는 동작이 발생기 때문인데요. RecyclerView는 NestedScrollingChild 인터페이스의 구현으로 중첩된 스크롤(nested scroll)에 대한 내용을 지원하고 있습니다. RecyclerView가 초기화 되고 중첩스크롤에 대한 기능이 true로 되어있는데 이를 비활성화 해주면 문제가 더보기…

Dagger2를 알아보자 – Android

Dagger2를 알아보자 – 기본편 Dagger2를 알아보자 – Scope  Dagger2를 알아보자 – Injection의 종류  Dagger2를 알아보자 – Qualifier  Dagger2를 알아보자 – Binding  Dagger2를 알아보자 – Multibinding  Dagger2를 알아보자 – SubComponent  Dagger2를 알아보자 – Android (You’re here) Dagger2를 알아보자 – Testing(준비중) Dagger2를 알아보자 – Dynamic Feature에 적용하기 대부분의 다른 의존성 주입 프레임 워크에 더보기…

LinearSnapHelper 마지막 아이템이 snap 되지 않는다면..?

기획자의 요구사항은 다음과 같았다. 첫번째 아이템은 RecyclerView 왼쪽편에 snap되어야할 것 마지막 아이템은 RecyclerView 오른쪽편에 snap되어야할 것 첫번째와 마지막 아이템을 제외하고는 아이템뷰의 중앙을 기준으로 RecyclerView 중앙에 스냅되도록 배치 할 것   SnapHelper를 사용하면되겠구나! PagerSnapHelper를 사용하니 한페이지 단위로만 snap되므로 RecyclerView내에 2개 이상 Completely Visible 아이템이 보이는경우는 snap 제대로 스냅 되지 않았다. 예를 더보기…

글쓴이 Charlezz,

Naver Tech Concert 2019: Android 후기

    네이버 테크콘서트 Android : 예제로 배우는 카메라2 – 발표영상, 발표자료 pdf 다운로드, 예제코드 생각보다 많은 분들이 참석해주셨는데요. 참석해주셔서 감사합니다. 다른분들보다 강연할 수 있는 시간이 짧아서 아쉬웠습니다. 그래서 짧은시간내에 많은 정보를 담으려 하다보니 자세히 설명 못드린점 죄송합니다. 작은 Tip 하나라도 얻어가셨다면 만족합니다. 강연이 끝나고 많은분들이 찾아오셔서 질문해주셨는데 시간도 부족하고, 제가 더보기…

RecyclerView 사용시 Diffing callback 구현하기

RecyclerView.Adapter의 성능을 높이거나 또는 같은 이유지만 Paging Component를 쓰는경우 DiffUtil.ItemCallback을 반드시 구현해야 합니다. 보통 Adapter내에서 Inner class로 구현하거나 Outer로 빼서 생성자 파라미터로 OldItem과 NewItem을 제공해야합니다. boolean areItemsTheSame(oldItem, newItem) 를 통해 이젠 아이템과 새로운 아이템의 ID가 같은지 비교한 뒤 같은 경우 내부에서 boolean areContentsTheSame(oldItem, newItem) 을 다시 호출하여서 객체의 필드가 같은지 더보기…

Dagger2를 알아보자 – Subcomponent

Dagger2를 알아보자 – 기본편 Dagger2를 알아보자 – Scope  Dagger2를 알아보자 – Injection의 종류  Dagger2를 알아보자 – Qualifier  Dagger2를 알아보자 – Binding  Dagger2를 알아보자 – Multibinding  Dagger2를 알아보자 – SubComponent (You’re here) Dagger2를 알아보자 – Android Dagger2를 알아보자 – Testing(준비중) Dagger2를 알아보자 – Dynamic Feature에 적용하기 Subcomponent 하위 컴포넌트(Subcomponent)는 상위 컴포넌트(Component)의 그래프를 더보기…

RecyclerView와 PagerSnapHelper로 ViewPager 만들기

ViewPager만들기 ViewPager2와 방식은 비슷하지만, 아직 정식 릴리즈가 나오지 않았습니다. 기존에 RecyclerView가 구현이 되어있다면 PagerSnapHelper만 추가하면 된다. MyAdapter adapter = … recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); // PagerSnapHelper 추가 PagerSnapHelper snapHelper = new PagerSnapHelper(); snapHelper.attachToRecyclerView(recyclerView);   Indicator 추가하기 RecyclerView에는 ItemDecoration을 이용해서 Indicator를 그릴수 있습니다.  저는 LinePagerIndicatorDecoration 참고해서 그려보았습니다. recyclerView.addItemDecoration(new LinePagerIndicatorDecoration()); SnapPagerScrollListener 더보기…

글쓴이 Charlezz,