본문 바로가기

프로그래밍 놀이터/안드로이드, Java1080

[android] AsyncLayoutInflater tutorial https://developer.android.com/reference/androidx/asynclayoutinflater/view/AsyncLayoutInflater -androidx 에 포함되어 있다.inflate 하는 동안에도 UI 를 responsive 하게 가져갈 수 있다는 장점이 있음 -AsyncLayoutInflater(this).inflate(resId:Int, parent:ViewGroup, listener:OnInflateFinishedListener?) -AsyncLayoutInflater 의 단점은 아래와 같다.parent 의 generateLayoutParams() 가 thread-safe 해야 한다.모든 뷰가 Handler 를 생성하거나 Looper.myLooper() 함수를 호.. 2020. 8. 22.
[android] WorkManager 를 사용해보자 https://www.bignerdranch.com/blog/doing-work-with-androids-new-work-manager/https://developer.android.com/topic/libraries/architecture/workmanagerhttps://developer.android.com/reference/androidx/work/WorkManager -https://developer.android.com/jetpack/androidx/versions 글을 정리하는 20.07.14 시점에는 2.3.4 release 상태 -Google 이 2018 I/O 에서 WorkManager 라는 것을 발표했다.그 전에는 background task 를 수행하기 위해서는 여러가지 배경지식이 .. 2020. 8. 21.
[android] MultiDex 에 대한 이야기 https://developers.soundcloud.com/blog/congratulations-you-have-a-lot-of-code-remedying-androids-method-limit-part-1 https://developer.android.com/studio/build/multidex.html - DEX file 의 method index 는 16bit 로 제한되어 있다. 이는 2^16 인 65,536 갯수 이상의 method reference 를 가질 수 없다는 것이다. 이 숫자에는 android framework methods, library methods, 그리고 너의 코드에 있는 methods 를 포함한 것이다. 64K 가 많아보이지만, android support lib 을 비롯.. 2020. 8. 20.
[android] Room 에 대해 알아보자 - Define data using entities https://developer.android.com/training/data-storage/room/defining-data -Room 을 사용할 때 entity 들을 정의하게 된다.각각의 entity 는 Database 의 table 에 매칭된다.Database class 에 entities array 로 제공하면 자동으로 생성된다. -@Entity data class User(@PrimaryKey var id:Int, var firstName:String?, var lastName:String?) -field 를 public 으로 만들거나, getter, setter 를 제공해주면 된다.getter, setter 를 사용할 경우, JavaBeans convention 을 따른다는 것을 알고 써야 한.. 2020. 8. 19.
[android] Room 에 대해 알아보자 - Accessing data using Room DAOs https://developer.android.com/training/data-storage/room/accessing-data -Dao 는 Room 의 메인 컴퍼넌트로, 각각의 DAO 는 app db 에 접근하는 추상적인 방법을 제공한다.직접 query 하거나 queryBuilder 를 통해 data 에 접근하는 대신, 각각의 컴퍼넌트에 대해 분리된 접근을 할 수 있다.게다가 DAO 는 test 를 위한 mock db access 를 제공하기가 쉬워진다. -DAO 는 interface 나 abstract class 가 될 수 있다.abstract class 라면, constructor 를 통해서 RoomDatabase 를 유일한 param 으로 받을 수 있다.Room 은 각각의 DAO 를 compile.. 2020. 8. 18.
[android] Room 에 대해 알아보자 - 기초 https://developer.android.com/jetpack/androidx/releases/roomhttps://developer.android.com/training/data-storage/room/index.html -Room 은 SQLite 의 추상화 layer 를 제공하는 lib 으로, SQLite 의 모든 기능을 사용하면서 더 견고한 db 접근을 할 수 있게 해준다. -Room 이 많은 부분을 케어해주기 때문에, SQLite 대신에 Room 을 사용하는 것이 강추된다. -Room 에는 3가지 컴퍼넌트가 있다. 1. Database DB holder 를 가지고 있으며, 앱의 relational 한 영구적인 data 에 접근하는 채널이 된다. @Database 로 annotate 된 cla.. 2020. 8. 17.
[android] dpi 값이 바뀔 수 있구나?!! ㄷㄷㄷ -이슈를 치다가 activity popup 모드를 접하게 되면서 activity popup 모드에서 어떻게 UI 들을 작게 그리는지를 팀원과 이야기하게 되었다.팀원은 dpi 값이 줄어들 것이 명백하다라고 했고, 나는 그렇다면 popup 모드로 변환하면서 그럼 res 의 참조들도 변하는거냐? xxhdpi -> xhdpi 가 되는거냐? 라고 물었다. 그래서 나는 명백한지는 모르겠다고 의견을 개진했다. 처음에는 흥미가 없었는데 흥미가 생겨 테스트해보기로 했다. -일단 popup 화면으로 전환 / full screen 으로 전환시 activity 를 destroy 하고 recreate 한다.manifest 의 configChanges 에 density 를 걸어주면 recreate 되지 않는다. 단, 이 녀석은 .. 2020. 8. 15.
[android] 앱 업데이트시 다운로드 사이즈 줄이기 https://android-developers.googleblog.com/2016/12/saving-data-reducing-the-size-of-app-updates-by-65-percent.html -돼왕 : 참고로 링크 걸린 원글은 2016.12.06 글임을 참고하시길.. -2016년 초부터 bsdiff algorithm 을 사용하여 app update 시 과거와 비교하여 47% 정도의 apk download size 를 줄일 수 있었다.File-by-File patching 기술을 이용하여 평균적으로 앱 업데이트시 본 apk 사이즈에 비해 약 65% 정도 작은 사이즈를 내려보낼 수 있게 되었다. -새로운 버전을 다운로드 받을 때 Google Play 는 과거버전과 새로운 버전의 앱 사이의 dif.. 2020. 8. 14.
[android] Activity Task 에 대한 이야기 with allowTaskReparenting 실험 (심화) -아래 명령을 통해 activity stack 을 볼 수 있다.$ adb shell dumpsys activity 여기서 TaskRecord 가 Task 의 group 구분이며,이 안에 Hist #N 로 표기된 HistoryRecord 부분을 보면 그 안에 쌓인 Stack 을 볼 수 있다.stack 은 packageName/Activity 형태로 표기된다. -FLAG_ACTIVITY_NEW_TASK 는 affinity 가 같은 task 위에 쌓이게 된다.따라서 A affinity 를 가진 A1 Activity 에서 A2 Activity 를 해당 flag 와 함께 띄워도 A stack 에 쌓인다. -taskAffinity 의 기본값은 packageName 이다. -taskAffinity 가 같은 Activ.. 2020. 8. 13.