본문 바로가기

Android39

Workmanager 이전의 안드로이드 백그라운드작업 Workmanager 이전의 안드로이드 백그라운드작업 Jetpack의 workmanager에대하여 알아보기 전에 이전의 안드로이드 백그라운드작업을 어떻게 처리했었는지 알아보도록 하겠습니다 . 1.android K (킷켓,API 19)이전 킷케버전 이전에서는 실행 및 종료 여부에 상관없이 수행되는 백그라운드 작업을 다음과 같이 처리해왔습니다. 기본은 AlarmManager 와 브로드캐스트 리시버를 사용하는 것입니다. AlarmManager 의 명세대로 우리가 지정한 타이밍에 딱 시스템에서는 알람이 오고, 이 알람에 맞춰서 백그라운드 작업을 수행하면 됐습니다만, 안드로이드 K (킷켓, API 19) 부터는 알람이 한없이 미뤄지거나 한번에 몰아서 처리되는 등 정확한 실행을 보장하지 않게 되었습니다. 안드로이드.. 2019. 5. 6.
Jetpack - Navigation Jetpack - Navigation 네비게이션은 앱의 목적지, 즉 사용자가 탐색 할 수있는 앱의 어느 곳에서나 발생합니다 . 이러한 대상은 작업을 통해 연결됩니다 . 네비게이션 그래프는 당신의 목적지와 행동을 모두 포함하는 리소스 파일입니다. 그래프는 앱의 모든 탐색 경로를 나타냅니다. 대상 은 앱의 다른 콘텐츠 영역입니다. 동작 은 사용자가 사용할 수있는 경로를 나타내는 대상 간의 논리적 연결입니다. 프로젝트에 탐색 그래프를 추가하려면 아래와같이 설정합니다. 프로젝트 창에서 res디렉토리를 마우스 오른쪽 버튼으로 클릭 하고 새로 만들기> Android Resource File을 선택합니다. 새 리소스 파일 대화 상자가 나타납니다. 파일 이름 필드에 "nav_graph"와 같은 이름을 입력합니다. 선택.. 2019. 5. 2.
Jetpack 알아보기 Jetpack이란 ?? Jetpack components 젯팩은 기능에 따라 크게 네가지의 컴포넌트로 구분할 수 있으며, 각각의 컴포넌트는 독립적인 활용이 가능합니다 1. Architecture : 구글에서 제안하는 안드로이드 아키텍처를 구현할 수 있는 기능들로 구성되어 있다. View를 포함한 UI 요소의 lifecycle management를 비롯하여 LiveData와 ViewModel, Room등의 기능이 여기에 포함됩니다 2. Foundation : 안드로이드 시스템의 핵심 기능을 담당하는 컴포넌트로, AppCompat을 비롯하여 코틀린 익스텐션과 Multidex 등이 포함됩니다 3. Behavior : 앱의 동작과 관련한 것들로 알림(notification)을 비롯하여 다운로드 매니저나 권한(p.. 2019. 5. 2.
Koin - DI 라이브러리 koin을 알아보자 Koin - DI 라이브러리 koin을 알아보자 Koin에 대하여 알아보기 전에 먼저 DI란게 어떤것인지 가볍게 알아보도록 하겠습니다 . - DI(Dependency Injection,의존성 주입) 이란 ? 현재 객체가 다른 객체와 상호작용(참조)하고 있다면 현재 객체는 다른 객체에 의존성을 가집니다. public class PetOwner{ private AnimalType animal; public PetOwner() { this.animal = new Dog(); } } 간단한 예로 PetOwner객체는 Dog에 의존적인 상황입니다. 이러한 의존성이 위험한 이유는 PetOwner객체는 AminalType객체 생성을 제어하기 대문에 두객체간 긴밀한 밀접이 생기고, AnimalType객체를 변경하면 P.. 2019. 5. 1.
MVVM - ViewPager와 TabLayout MVVM - ViewPager와 TabLayout ViewPager와 TabLayout을 MVVM패턴을 적용하여 사용하는 방법을 알아보겠습니다. 아래는 적용된 사진입니다 .프래그먼트 1개로 동적으로 4개의 탭을 만들어 뷰페이저에 적용하였습니다. 그리고 뷰페이저와 탭레이아웃을연결하여 탭을 클릭하면 뷰페이저 프래그먼트가 바뀌도록 되어있습니다. 크게 MainActivity와 childFragment로 구성되어있습니다 .먼저 MainAcitivity의 레이아웃먼저 보도록하겠습니다 . activity_main.xml TabLayout과 ViewPager가 있습니다.TabLayout에는 app:setupWithViewPager 를 이용하여 뷰페이저 아이디를 넣어 연결해줍니다.ViewPager에는 addOnPageC.. 2019. 3. 26.
안드로이드 스튜디오 단축키 안드로이드 스튜디오 단축키 안드로이드 공식 document↓ https://developer.android.com/studio/intro/keyboard-shortcuts?hl=ko 설명Windows/LinuxMac일반모두 저장Control + SCommand + S동기화Control + Alt + YCommand + Option + Y편집기 최대화/최소화Control + Shift + F12Control + Command + F12즐겨찾기에 추가Alt + Shift + FOption + Shift + F현재 프로필로 현재 파일 검사Alt + Shift + IOption + Shift + I빠른 전환 구성표Control + ` (역따옴표)Control + ` (역따옴표)설정 대화상자 열기Control +.. 2019. 3. 10.
데이터바인딩 - 리스너바인딩하기 데이터바인딩 - 리스너바인딩하기버튼을 클릭했을때나 리스너들은 모두 뷰모델에서 처리할 수 있습니다. onClick 처럼 이름이 정해져 있는 것들은 다르게 쓰면 안되고 그대로 써야합니다.ex ) android:onClick="@{(v)->viewModel.clickEvent()}" 다른 컴포넌트 들은 setOn~Listener에서 set을 빼고 O를 소문자 o로 바꿔쓰면 작동합니다.ex) setOnNavigationSelectListener - >app:NavigationItemSelectedListener="@{viewModel::NavigationItemSelectedListener}"ex)onRangeSelectListener-> app:onRangeSelectedListener="@{calendarD.. 2019. 2. 21.
안드로이드 디버그 - 중단점 걸기 중단점 걸기우선 확인하고 싶은 라인에 중단점을 걸어 앱 실행을 일시 중지합니다. 중단점을 거는 방법은 라인 옆의 빈공간을 클릭 하거나 단축키 (Command+F8 / Control+F8)를 클릭합니다. 아래 이미지의 라인 옆의 빨간 점이 중단점입니다. 앱이 실행 중일 때 오른쪽 상단의 Attach debugger to Android process를 클릭해 디버깅 모드를 실행할 수 있습니다. 앱이 실행 중이지 않을 때 Debug ‘app’ 버튼 또는 단축키(^D)를 클릭해 디버깅 모드를 실행합니다. 앱이 실행되다가 단점을 만나면 아래와 같이 앱은 일시중지될 겁니다. 이때 디버깅 탭의 도구들을 사용해서 앱의 상태를 확인할 수 있습니다. 만약 Variables 영역이 보이지 않으면, 1번 영역에서 Restor.. 2019. 2. 13.
안드로이드 타이틀바와, 스테이터스바 없애기( FULL SCREEN) ,WindowManager 안드로이드 스테이터스바 없애기( FULL SCREEN) 안드로이드앱에서는 아래처럼 상태바와 타이틀바가 있습니다 . 상태바는 최상단에 위치하며, 상태를 나타내는 바입니다.푸시알림, 소리, 와이파이, 시간등등 안드로이드 폰 자체내의 App상태는 나타냅니다. 타이틀바는 자신이 만든 앱의 제목을 나타내는 바입니다.색상도 자유롭게 선택 가능하고 버튼도 넣을수 있습니다 . 이러한 타이틀바와 스테이터스바를 없앨려면 어떻게 해야할까요 ? 1) 타이틀바 없애기 styles.xml @color/colorPrimary @color/colorDarkBlue @color/colorAccent false true \AppTheme은 기본 스타일입니다 .여기에 windowActionBar false와 windowNoTitle tr.. 2019. 2. 4.
안드로이드 multidex 문제 해결하기 안드로이드 multidex 문제 해결하기 안드로이드에서 앱 개발을 하다 규모가 커지게 되면 코드도 많아지고 라이브러리도 많아지게 됩니다.이럴때 빌드시 오류가 발생하게 됩니다. trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option. 이 오류는 65536(64K)개 이상의 함수(Method)를 초과할 경우에 발생 합니다. 안드로이드에서는 JAVA의 class 를 사용하지 않고 class -> dex로 변환하여 사용하고 있습니다. 즉, java에서는 MainActivity.java를 컴파일 하면 MainActivity.class 생성되는데 이를 다시 MainActivi.. 2019. 2. 1.
안드로이드 앱런처 만들기 안드로이드 앱런처 만들기안드로이드 런처(Launcher)란 안드로이드 OS환경에서 홈 화면의 인터페이스를 관리하는 하나의 앱이라고 정의할 수 있습니다. 앱런처를 만드는방법은 간단합니다실행되는 처음 액티비티에android:launcMode="singleTask"intent-filter에내용을 추가해주면 작성한 앱이 앱런처로 작동하게 됩니다. 예) 2019. 1. 29.
안드로이드 MVVM 패턴 안드로이드 MVVM 패턴 MVVM의 기본 구조MVVM의 기본 구조를 그림으로 표현한 것입니다. View는 ViewModel에게 클릭 이벤트, 필요한 데이터 요청등을 명시적으로 하고, viewModel이 notify 할때까지 기다리게 됩니다. 그와 동일하게 ViewModle은 통해 데이터를 요청하고 기다리게 됩니다. 각각의 컴포넌트 간 레퍼런스를 갖지 않고 단방향(View -> ViewModel -> Model)의 디펜던시만을 갖게 됩니다. ViewModelView와 Model 사이의 매개체 역할을 합니다. 즉 Model 에서 제공받은 데이터를 UI에서 필요한 정보로 가공한 뒤 View가 가져갈 수 있게 데이터 변경에 대한 "이벤트"를 보내게 됩니다 ViewModel과 View는 MVP패턴과 다르게 Man.. 2019. 1. 26.
Retrofit 사용하기 출처 - Retrofit 한글문서 http://devflow.github.io/retrofit-kr/ Retrofit은 HTTP API를 자바 인터페이스 형태로 사용할 수 있습니다.public interface GitHubService { @GET("/users/{user}/repos") Call listRepos(@Path("user") String user); }Retrofit 클래스로 GitHubService 인터페이스를 구현하여 생성합니다.Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com") .build(); GitHubService service = retrofit.create(GitHubService.clas.. 2019. 1. 23.
Gson 라이브러리 사용하기 Gson 라이브러리 사용하기Gson은 java Object를 JSON 표현으로 변환하는데 사용할 수 있는 java 라이브러리입니다. JSON 문자열을 java객체로 변환하는데도 사용할 수 있습니다. 주요기능기본형 변환 지원클래스 변환 지원제네릭 지원, List , Map 등 콜렉션을 변환 할 때 유용멀티스레드 지원, Gson 내부 상태를 갖지않아 Thrad-safe이다빠르고 가볍다. Serialize보다 좋음 생성하기//JavaGson gson=new Gson()//Kotlinvar gson=Gson() 형변환 (Java->Json)gson.toJson(short, int, long, float, double, String, Object) 형변환 (Json->java)gson.fromJson(json문자.. 2019. 1. 22.
개발을 빠르게하는 안드로이드 단축키 개발을 빠르게하는 안드로이드 단축키 1)Find Action (검색)[CTRL]+[SHIFT]+[A]안드로이드 스튜디오의 거의 모든 기능을 검색할 수 있습니다. 2)자동완성[CTRL]+[SPACE]문자열을 바탕으로 예측하는 기본적인 자동완성 기능입력한 문자열을 보고 자동완성 후보를 예측해 보여줍니다. 3)현재 위치 자료형을 바탕으로 자동완성[CTRL]+[SHIFT]+[SPACE]자료형을 이용한 자동완성 기능.인수를 입력할때 자동완성을 통해 인수 자동완성 4) 오류수정 Quick Fix[Alt]+[Enter] 5)현재 구문 완성[CTRL]+[SHIFT]+[ENTER]현재 구문을 완성할 수 있습니다. 코드를 정렬하면서 세미콜론이나 {}를 입력해주고 다음에 입력해야 하는 곳까지 이동합니다. 6) 매개변수 정보.. 2019. 1. 20.