Android/Common

Android/Common

[Android] AAC ViewModel에서 Context 접근하는 방법

안녕하세요 점냥입니다 :) AAC ViewModel 즉, ViewModel에서 Context를 잘못 사용할 경우 메모리 측면에서 안 좋은 영향을 준다는 것을 알고 있어서 최대한 안 쓰는 방향으로 개발을 하고 있어요. 하지만 종종 Context의 필요성을 조금씩 느끼고 있는데요. 그럴 때마다 내가 잘못 알고 있는 것은 아닌 지, Context를 좀 더 잘 사용하는 방법이 무엇인지 고민을 하게 되었어요. ViewModel에서 Context가 필요한 상황은 class MyViewModel: ViewModel() { fun getA() { if (...) throw CustomException("이건 잘못된 상황이야!") ... } } Android에서는 HardCoded String으로 선언된 문자열을 str..

Android/Common

[Android] EventBus

HTML 삽입 미리보기할 수 없는 소스 안녕하세요 점냥입니다 :) Activity, Fragment, 혹은 Service 간의 데이터 송수신. 여러분들은 어떤 방식을 사용하고 있으신가요? intent, bundle부터 Receiver, ViewModel까지 다양한 방법들이 머릿속에 떠오르실 거라 생각이 드는데요. 제가 오늘 소개해드릴 EventBus 라이브러리는 역시 Android 내에서 데이터를 공유하는 방법의 하나입니다. 저도 입사 전에는 전혀 모르고 있던 라이브러리인데요. 회사 내에서 여러 프로젝트를 개발할 때 EventBus 라이브러리 덕분에 쉽고 빠르게 개발을 완료할 수 있었던 좋은 기억들이 많아서 오늘 간단한 사용 방법과 현업에서 어떻게 사용하고 있는지 소개해보려고 합니다. EventBus E..

Android/Common

[Android] Bottom Navigation Bar State with Compose - (2)

HTML 삽입 미리보기할 수 없는 소스 Bottom Navigation Bar UI with Compose - (1) Bottom Navigation Bar State with Compose - (2)

Android/Common

[Android] ViewTree 내에 동일한 ID을 가진 위젯이 존재할 경우 UI 상태 저장 오류 해결 방법 - 2

안녕하세요. 점냥입니다. 이번 포스팅은 지난 UI 상태 저장 시리즈의 두 번째 글입니다. 1. Android에서 제공해주는 Ui View 상태 저장 2. ViewTree 내에 동일한 ID을 가진 위젯이 존재할 경우 UI 상태 저장 오류 해결 방법 Andorid 위젯은 기본적으로 ID가 지정되면 상태를 저장한다고 지난 시간에 이야기를 했습니다. 그런데 이로 인해 생각하지 못했던 부분에서 문제가 발생할 수도 있더라구요.. 실제로 얼마전 회사에서 몇시간동안 원인을 몰라 머리를 끙 싸맸던 문제였습니다. 제목처럼 동일한 2개 이상의 ViewGroup를 가진 ViewTree 내에 동일한 Id를 가진 위젯이 존재하는 경우입니다. 먼저 문제 상황을 볼까요? 문제 상황 위처럼 EditText를 FrameLayout인 V..

Android/Common

[Android] Android에서 제공해주는 UI View 상태 저장 - 1

안녕하세요. 점냥입니다 작년 11월 글 이후로 6개월 만이네요. 우연히 처음 저의 블로그에 들어와 주신 분일 수도 있지만 만약 이 글로 인해 오랜만에 다시 찾아와 주신 분이라면 먼저 감사의 인사를 드리고 싶습니다. 6개월 공백의 이유를 물어보신다면 바쁜 활동으로 인해..라고 대답하고 싶지만 게으름 때문입니다. 취직으로 인해 몸과 마음의 긴장이 풀리면서 지금까지 자기 계발 시간 없이 게임만 한 것 같습니다.. 여느 때와 다르지 않게 일요일 새벽까지 게임을 하고 침대에 누웠는 데 그런 생각이 들더라고요. "주말이 벌써 끝났네. 나 이번 주말에 뭐했더라.. 게임만 했네" 내 자신이 한심하더군요. 게임 세계에서 즐거웠던 시간들이 컴퓨터를 끄고 침대에 눕자마자 저번 주와 변하지 않은 나를 마주하다 보니.. 이제는..

Android/Common

[Android] Paging3 + Admob Native Ad

안녕하세요 점냥입니다:) 좋은 앱 서비스를 완성했다면 그다음 고민은 수익 모델이죠. AWS 등 클라우드 서비스를 통해 서버를 구축했다면 다달이 나오는 서버 비용을 무시할 수 없기 때문이에요... 그렇기 때문에 우리 Android 개발자들은 Admob 광고 SDK를 앱에 잘 녹여들 수 있게 고민을 시작해야 합니다. !!!? 갑자기 Admob.. 왜..? 그 이유는 최근 Admob 네이티브 광고를 개인 프로젝트에 적용하느라 아주 고생을 많이 했기 때문이에요... 라이브러리 자체를 적용하는 것은 어렵지 않아요. 하지만 우리 프로젝트 앱들은 모든 코드가 Activity class 하나 파일에 들어가 있는 형태는 아니잖아요? 여러 가지 다양하고 복잡한 구조로 구성되어 있는 데, 공식 문서에서 설명하는 내용은 간단..

Android/Common

[Android] 좋아요 기능으로 알아보는 더블 클릭 방지하는 방법

안녕하세요. 점냥입니다:) 좋아요 기능이란? 이 글을 읽으시는 분들 모두 좋아요 기능이 어떤 기능인 지 아실 것이라고 생각되서 설명드리기 민망하지만, 일반적으로 하트 모양의 버튼을 클릭을 하면 좋아요 혹은 좋아요 취소 요청을 서버로 보내 UI를 업데이트하는 방식일 것입니다! 그런데 문제는 클릭 액션은 발생하기 굉장히 쉽다는 것입니다. 좋아요를 눌렀다가 다시 좋아요 취소 요청을 보내는 이러한 상황은 한번이 아니라 여러번 발생할 수 있습니다. 좋아요 기능은 클릭할 때마다 상태가 변경되고 그에 따른 서버 요청들의 결과들을 UI에 표시해 주어야 하는데 단순 클릭 리스너를 사용하면 정확하게 동기화 시키는 것은 쉽지 않습니다. 이 문제를 어떻게 해결해야 할까요? 하나씩 알아보고 가장 본인에게 잘맞는 방법을 사용하시..

Android/Common

[Android] fromHtml Bullet 속성 변경하기

안녕하세요 점냥입니다 :) Android에서 리스트 형태를 표현할 때, RecyclerView를 사용하는 것이 아닌 Html 파싱해서 화면에 보여줄 수 있습니다 Html 문서를 보면 API 1 때부터 Android에서 공식으로 제공해주는 클래스예요! 첫번째 리스트 아이탬 두번째 리스트 아이탬 본론으로 돌아와서 위와 Html을 볼까요? ui 태그로 리스트임을 명시하고 있으며, li 태그로 2개의 아이템을 가지고 있다는 것을 알 수 있네요. 리스트 형태로 텍스트를 표현할 때 위와 같이 Html로 내려주면 정말 편하더라고요. 현재 Html에는 color만 지정되어 있지만, Url Link와 다양한 글자 색상, 글자 스타일이 있다면 더욱 Html을 파싱 해서 사용하는 것이 좋겠죠? Html Defulat 속성으..

Android/Common

[Android] RecyclerView - ConcatAdapter

안녕하세요. 점냥입니다:) 굉장히 오랜만에 글을 쓰네요 ㅎ. 다들 잘 지내셨나요? 오늘은 RecyclerView 새로운 버전이 나오면서 새로운 Adapter인 ConcatAdapter에 대해서 알아보겠습니다. 사실 처음에는 MergeAdapter라는 이름으로 나왔지만 ConcatAdpater로 이름이 변경되었습니다. ConcatAdapter RecyclerView는 하나의 Adapter만을 가지며, 반복되는 뷰 리스트를 그리는 위젯입니다. 그 이유 때문에 사진과 같이 Header 혹은 Footer 등을 표현하기 위해 포지션으로 구분하고, 각 뷰 타입의 로직을 포지션 별로 구분하여 넣어주어야 했습니다. 이는 한 클래스에서 2가지 역할을 가지는 방법이며, 뷰가 복잡해질수록 코드가 비대해지는 안 좋은 방법이었..

Android/Common

[Android] LiveData의 Data를 한번만 관찰

안녕하세요. 점냥입니다:) 이번 포스팅 주제로는 SingleLiveData입니다. Android AAC LiveData의 사용법 중 하나로 LiveData를 아직 잘 모르신다면 링크를 먼저 읽어와 주세요! LiveData의 변경된 Data를 오직 한 번만 관찰? LiveData는 AAC ViewModel에서 주로 쓰이는 클래스로 뷰의 수명주기에 알맞게 데이터를 저장하는 역할을 가지고 있습니다. ViewModel에 존재하기 때문에 LiveData들은 디바이스의 가로/ 세로 전환 등 뷰가 재생성될 때에도 데이터가 유지됩니다. 따라서 뷰는 데이터를 다시 네트워크나 내부 저장소에서 가져올 필요가 없이 그대로 이전 데이터를 다시 사용할 수 있죠. 그런데 이러한 특성을 가진 ViewModel + LiveData 패..

점냥
'Android/Common' 카테고리의 글 목록 (2 Page)