안드로이드

LiveData LiveData는 관찰 가능한 데이터 홀더 클래스이다. 일반 클래스와 달리 수명주기를 인식한다. Observer 클래스로 표현되는 관찰자의 수명 주기가 STARTED, RESUMED 상태이면 LiveData는 관찰자를 활성 상태로 간주하고, 활성 상태인 관찰자에게만 업데이트 정보를 알린다. LifeCyclerOwner 인터페이스를 구현하는 객체와 페어링 된 관찰자를 등록할 수 있다. 이 관계를 사용하면 관찰자에 대응되는 LifeCycle 객체의 상태가 Destroyed로 변경될 때 관찰자를 삭제할 수 있다. 이는 특히, 액티비티 및 프래그먼트에 유용한데, LiveData를 안전하게 관찰할 수 있고 수명 주기가 끝나는 즉시 수신 거부되어 메모리 누수에 대한 이슈가 없기 때문이다. LiveD..
Behavior changes : Apps targeting Android 13 or higher Android 13 이상을 타겟팅한다면 변경된 동작을 올바르게 지원하도록 앱을 수정해야 한다. developer 사이트를 참고하여 변경된 내용을 정리해 보았다. 아래에 정리된 내용 외에 다른 내용도 있지만, 현재 프로젝트에서 필요한 부분들만 정리했다. 추가적인 부분은 developer 사이트를 참고하자. 1. 알림 권한 이전에는 앱을 설치하면 기본적으로 알림을 띄우는 게 가능했지만, API 33 이상에서는 Notification 런타임 권한이 추가되었고, 위 권한으로 앱의 알림 발송을 사용자가 제어할 수 있도록 변경되었다. Permission에 POST_NOTIFICATIONS을 통해 사용자에게 permis..
데이터 바인딩이 가장 중요하다고 느껴서 따로 작성해보았다. 데이터 바인딩 외에 뷰에 대한 접근은 아래의 링크 참고~ https://ystech.tistory.com/entry/Android-View-%EC%A0%91%EA%B7%BC [Android] View 접근 서론 보통 지금까지 개발을 하면서, Android 클래스에서 뷰에 접근하려고 할 때 findViewById 방식을 사용해 왔다. 위의 방식을 사용하면서 접근해야 할 View가 많아지면 코드의 양도 많아지고 불편했 ystech.tistory.com 데이터 바인딩이란? 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리하는 기술 UI Controller, ViewModel, LiveData 등과 자주 쓰이고 효과적 레이아웃은 흔히 UI 프레임워크 메서..
URI Scheme 방식은 Android와 Ios에서 모두 사용 가능한 딥 링크 수단이다. 딥링크란? 딥 링크는 홈페이지가 아닌 홈페이지 내에 특정 화면에 한 번에 도달할 수 있는 링크이다. 예를 들면, 네이버 웹툰의 BaseUrL : https://comic.naver.com/webtoon/weekday 네이버 월요 웹툰 URL : https://comic.naver.com/webtoon/weekdayList?week=mon 네이버 웹툰 매일매일 새로운 재미, 네이버 웹툰. comic.naver.com 네이버 웹툰 매일매일 새로운 재미, 네이버 웹툰. comic.naver.com 위의 BaseUrL이 네이버 웹툰의 일반 링크라면, 아래의 월요웹툰에 해당하는 URl이 딥링크라고 볼 수 있다. 오늘 정리해..
1. WebView란? WebView는 웹 애플리케이션 또는 웹페이지만 클라이언트 애플리케이션의 일부로 제공하려는 경우에 사용하고, Android View 클래스의 확장으로 웹페이지를 활동 레이아웃의 일부로 표시할 수 있게 해 준다. WebView의 모든 작업은 기본적으로 웹페이지를 표시하는 것이다. 쉽게 설명하자면, 앱 안에 웹 브라우저를 넣는 개념으로 생각하면 된다. WebView는 우리가 흔히 말하는 하이브리드앱(웹앱)을 구현할 때 많이 사용한다. 2. WebView의 사용법 xml java WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("불러오려는 웹페이지의 URL"); manifest ... 위 코드는 앱이..
ViewModel이란? ViewModel은 비즈니스 로직 또는 화면 수준 상태 홀더이다. UI에 상태를 노출하고 관련 비즈니스 로직을 캡슐화한다. ViewModel을 사용하게 되면 Activity 간에 이동하거나 화면 전환을 따를 때 UI가 데이터를 다시 가져올 필요가 없다. 이러한 ViewModel은 위 클래스를 사용하지 않고, 일반 클래스로도 구현이 가능하다. 그러나 이는 Activity와 탐색 대상 간에 이동할 때 문제가 될 수 있다. 인스턴스 상태 저장 메커니즘을 사용하여 데이터를 저장하지 않을 경우 해당 데이터가 소멸된다. 이러한 점을 해결하기 위해 ViewModel은 데이터 지속성을 위한 편리한 API를 제공한다. ViewModel의 이점 UI 상태를 유지할 수 있다. 비즈니스 로직에 대한 액..
서론 보통 지금까지 개발을 하면서, Android 클래스에서 뷰에 접근하려고 할 때 findViewById 방식을 사용해 왔다. 위의 방식을 사용하면서 접근해야 할 View가 많아지면 코드의 양도 많아지고 불편했다. 자바로만 안드로이드 개발을 하다 새롭게 코틀린을 접하게 되면서 바인딩이라는 개념에 대해 접하게 되었는데, findViewById의 방식보다는 어렵지만 필요성을 느껴 정리해보려고 한다. View 접근 가장 흔하게 사용해왔던 방식인, findViewById에 관해 먼저 이야기해 보자면, xml 파일(Layout)에서 뷰에 Id를 설정해준 뒤 소스에서 그 Id를 통해 접근하는 방식이다. TextView text1 = findViewById(R.id.text1); TextView text2 = fi..
앱 개발을 하다 보면, 실제 플레이스토어를 통해 배포하는 경우가 생길 것이다. 배포를 하고 나서 유지보수를 하는 과정에서 운영/개발 소스를 따로 분리하는 경우도 생길 것이고, 유료/무료 버전을 구분할 경우가 생길 것이다. 위와 같은 경우 하나의 소스 파일을 동일하게 사용하지만 그 안의 값들을 바꿔서 다른 버전들을 만들어 내는 것이다. 이러한 버전 관리를 알아보기 전에 앱 버전이 어떤 것인지 먼저 살펴보자. 1. App Version? 앱의 버전은 보통 1.2.3과 같은 형식으로 작성한다. 앞에서부터 Major, Minor, Patch 순의 숫자로 표기한다. 기존 버전과 호환되지 않게 API가 바뀌면 "Major" 버전을 올려준다. 기존 버전과 호환되면서 새로운 기능을 추가할 때는 "Minor" 버전을 올..
MVC/MVP/MVVM 패턴 학습 디자인 패턴을 사용하는 이유는 이러한 패턴 없이 자유롭게 코드를 작성하게 되면 규모가 커질수록 하나의 액티비티가 복잡하고 비대해져 문제가 생길 수 있고, 유지보수 즉면에서도 어려움이 있을 수 있고, 액티비티 특성상 LifeCycle에 따른 영향도 있을 것이며 데이터도 안전하게 다루지 못하기 때문이다. 따라서 LifeCycle의 영향, 코드의 복잡, 비대에 대한 영향, 앱 사용 환경 등 다양한 이유와 문제점을 바탕으로 좀 더 안전하고 깔끔한 개발을 위해 아키텍처 패턴이 생겨났다. MVC(Model View Controller) MVC 패턴에서 사용자 입력은 컨트롤러(Activity)를 통해 들어오며 컨트롤러는 모델과 상호작용을 통해 View(xml)을 업데이트한다. 이 때..
RecyclerView란? RecyclerView는 ListView와 유사한 형태로 대량의 데이터 세트를 효율적으로 표현할 수 있는 요소이다. 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 RecyclerView 라이브러리가 필요할 대 요소를 동적으로 생성한다. 이름에서 알 수 있듯이 RecyclerView는 개별 요소를 재활용한다. 항목이 스크롤되어 화면에서 벗어나더라도 RecyclerView는 뷰를 제거하지 않고 새 항목의 뷰를 재사용한다. 이렇게 뷰를 재사용하면 앱의 응답성을 개선하고 전력 소모를 줄이기 때문에 성능이 개선된다. 위의 설명이 RecyclerView와 ListView의 가장 큰 차이점이다. 그래서 실제로 안드로이드 개발을 하다 보면 RecyclerView가 많이 사용된다. Re..
빡수수
'안드로이드' 카테고리의 글 목록 (3 Page)