일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ViewModel
- Android
- Java8
- FRAGMENT
- Java
- Database
- library
- Room
- IntelliJ
- sourcetree
- github
- androidstudio
- git
- Kotlin
- ReactiveProgramming
- Version
- livedata
- homebrew
- rxjava
- Jetpack
- leetcode
- Algorithm
- programmers
- Today
- Total
목록Android (8)
Learn & Run
새 직장에와서 거래소 안드로이드 앱을 열심히 구축하고 있습니다. 현재 개발중인 거래소앱은 Single Activity 모델로 삼아, 거의 모든 화면들은 Fragment를 사용하고 있습니다. 그래서 Fragment간 데이터 전달이 요구될때가 정말 많은데, 저희는 아래 샘플 프로젝트 처럼 구성하여 사용하고 있습니다. + 실제 적용된 아키텍쳐나 다른 라이브러리들의 사용은 제외하고 샘플 프로젝트로 간단히 설명을 드리겠습니다. MainActivity와 AFragment, BFragment가 화면에 동시에 보이고 있는 상황이라고 가정해봅시다. 어떤 동일한 상태에 따라 각 화면에서의 처리는 어떻게 할 수 있을까요? 단순히 Intent를 사용해서 데이터를 주고받을 수는 있을 것 같습니다. 하지만, 데이터가 많아지거나 ..
이번 포스팅에서는 Jetpack에 포함된 ViewModel 라이브러리에 대해 소개합니다. 앞서 설명한 Room처럼 대중적으로 많이 사용되는 라이브러리입니다. ViewModel에서 한 번 알아보도록 합니다. ViewModel이란 무엇인가? 우리는 앱을 개발할 때, 단순한 기능을 구현하는 것 이상으로 앱의 아키텍쳐 설계에 대해서도 고민을 하곤 합니다. 그러면서 접하게되는 여럿 디자인 패턴중에서 MVVM(Model - View - ViewModel)에 대해 들어본 적이 있을 것 입니다. 저는 처음에 MVVM의 ViewModel과 Jetpack에 포함된 ViewModel이 같은 건지 다른 건지 헷갈려했던 기억이 있습니다. 사실 완전히 다른 차원의 개념인데도 불구하고 말입니다. MVVM에서의 ViewModel은 ..
이전 포스팅에서 간단하게 SQLite 데이터베이스를 사용해보면서 어떤점이 개선되어야 하면 좋을 것 같은지 살펴보았다. 그러면 Jetpack에 포함된 Room 라이브러리를 사용해보면서 앞서 언급한 문제들을 해결해줄 수 있을지 확인해 보도록 하자. 이번 포스팅에서는 Room에 대해 소개해보려고 한다. Room이란 무엇일까? Room은 기기 내에서 사용하는 데이터베이스를 편리하게 사용할 수 있는 라이브러리이다. 앞서 SQLite 데이터베이스를 사용해 보았는데, 우리는 왜 Room을 사용해야하는지 아래 이미지를 통해 확인할 수 있다. 한마디로 Room 라이브러리를 사용하면 위와 같은 문제들을 개선 또는 해결할 수 있다는 것이다. 이러한 이유로 Google에서는 Room의 사용을 권장한다. SQLite에 비해서 ..
Jetpack에 포함된 Room에 대해 먼저 소개해보려 한다. 이제는 아주 흔하게 들릴지도 모르는 라이브러리지만, 안드로이드 개발을 이제서야 시작한 사람이라면 모를수도 있을 것 이다. 안드로이드 개발자 채용 공고중에 자격 조건을 보면 Jetpack에 포함된 라이브러리들을 사용한 경험이 있는지 여부를 묻기도 한다. 그 만큼 Jetpack은 안드로이드 개발자가 갖춰야할 역량에 있어서 아주 중요한 부분이라고 할 수 있다. 지금까지 SQLite라는 데이터베이스를 공부해오고 있었다면, Room이라는 것을 습득하기에 큰 무리가 없을 것 이다. 다만, 어떤점이 개선 되었고, 차이가 있는지에 대해서라도 알고가야만 할 것 이다. Room을 사용해서 SQLite를 좀 더 안전하고 편리하게 사용할 수 있다고 하는데 한 번 ..
이전 포스팅에서 우리는 ListView에서 새로운 아이템이 화면에 보여질 때 ConvertView라는 파라미터를 이용하여 성능을 개선해 보았고, 이보다 더 개선된 ConvertView에 ViewHolder pattern을 적용시켜 보았다. 이번 포스팅에서는 조금은 다른 주제로 ViewHolder를 다뤄보고자 한다. BaseAdapter를 상속한 CustomAdapter 내부에서 ViewHolder Class를 정의하려고 한다. 여기서 문제에 봉착한다. ViewHolder Class는 Static일까 Non-static일까? 정답이 있는걸까? 아래에서 알아보도록 하자. 1. Lint에서 아주 잘 설명해준다 Reports any inner classes which may safely be made stati..
Android 공부를 시작하다보면 여러개의 아이템을 보여줄 수 있는 ListView를 접하게 된다. 좀 더 진도를 나아가보면 훨씬 더 중요하고 자주 쓰이는 RecyclerView를 접하게 되지만, 이번 포스팅에서는 ListView에 초점을 두어 작성해보려고 한다. 이전 포스팅에서 BaseAdapter를 상속한 Adapter의 getView() 메서드에서 인플레이션 과정이 일어나는 것을 설명했다. 다시 한 번 알아보도록 하고, 이것을 개선시킬 수 있는 방법인 ConvertView와 ViewHolder pattern에 대해서도 알아보도록 하자. 1. BaseAdapter의 getView() 메서드 다시 확인하기 2. ConvertView란 무엇인가 우선 converView를 알아보기전에 ListView에 먼..
이전 포스팅에서는 setContentView 메서드를 통해서 전체 화면이 인플레이션 과정을 거친 후 실제 화면으로 보여지게 된다는 것을 알수 있었다. 하지만 FrameLayout이나 Adapter를 사용할 때처럼 전체 화면 중에서 일부분만을 차지하는 화면 구성요소들을 XML레이아웃에서 로딩하여 보여주고 싶을 때 (부분화면일 경우) LayoutInflater의 inflate 메서드를 사용할 수 있다. 이번 포스팅에서 직접 다루어 봄으로써 부분 화면에 대한 사용 예시를 확인해 보도록 하자. 1. 부분 화면 띄우기 사용자로써 우리가 사용하는 대부분 앱들은 시작하면서 초기화된 전체 화면뿐만 아니라 다양한 화면들이 보여지고 사라진다는 것을 알고있다. 전체 화면이 보여진 이후에도 부분 화면들로 보이는 것들을 제어할..
안드로이드를 공부한지 꽤(내 기준) 되었음에도 불구하고, 인플레이션이란 것이 무엇인지 정확하게 설명할 수 없어 내 것으로 만들어보고자 한다. 도대체 안드로이드에서 인플레이션이란 무엇일까? 또한, 인플레이션이 어디에서 일어나고 있는 것일까? 라는 궁금증이 생기곤 한다. 흔히 보던 Activity내의 setContentView 메서드는 어떤 역할을 하는지, 그것이 인플레이션과 어떤 연관성이 있는지 알아보고자 합니다. 1. Inflation이란 무엇인가 아마 다들 경제학 용어로 많이 들어봤을 것이다. 안드로이드에서 Inflation이 의미하는 것은 팽창이라는 의미에 가깝다고 생각한다. 뒤에서 다시 한 번 언급하겠지만, Inflation이란 과정은 눈에보이지 않던(코드로만 작성되어 있는) XML 파일이 실제 메..