간단히 알람앱을 하나 만들다가 간단히 안되서 좀 많이 빡치고 오래걸렸다. 그 경험을 기록하려 한다. 마구잡이로 하다가 성공하고나서 뭐가 어떻게 동작하는지 하루종일 버전별로 이것 저것 테스트 해봤는데, 여전히 혼란스럽기 때문에 적당히 정리가 필요하다. 시작하기전에 꼭 알아야 하는점은, Alarm 앱을 만드는데에 AlarmManager로 해결되지 않는다는 사실이다. AlarmManager를 사용은 하겠지만, 실제 표시하는 부분은 Notification을 이용한다. 이름때문에 함정에 빠지지말자. 일단,…
[카테고리:] 안드로이드
안드로이드 개발내용
Android Release names and API level
https://developer.android.com/studio/releases/platforms 참조. 년도 코드명 버전 API 레벨 2020 android 11 30 2019-2020 android 10 29 2018 Pie android 9 28 2017 Oreo android 8.1 27 2017 Oreo android 8.0 26 2016December Nougat android 7.1Revision 3 25 2016November Nougat android 7.1Revision 2 25 2016October Nougat android 7.1Revision 1 25 2016August Nougat android 7.0 24 2015November Marshmallow…
Android: Service onUnbind() 리턴값에 대해
onUnbind() 는 boolean을 리턴하게 되어있는데, false를 리턴하면 다시 bind될 때 아무것도 불리지 않는다. 이렇게 동작하는 이유는 onBind()에서 IBinder를 한번 리턴받으면, 시스템이 이 값을 계속 재활용하기 때문이고 다시 bind를 해도 전혀 문제없이 동작하게된다. 이경우 문제가 있을 수 있는데, 예를들어 onUnbind() 에서 상태를 검사하고 stopSelf()로 서비스 종료를 하도록 해도, onBind()-onUnbind()가 두번째 binding부터는 전혀 불리지가 않아 원하는 동작을…
Kotlin: data class equals without id
DB를 사용하면서 Entity를 data class로 표현하는데, id를 자동생성되도록 했더니 두개의 entity 비교에 문제가 생겼다. 내가 원하는건, id를 제외한 내용의 비교. data class가 자동 생성해주는 equals()를 포기하고 내가 재정의 하기엔, 너무 말이 안되는거 같아서 한참을 헤매이다가 알아냄. data class가 자동생성해주는 equals()는 primary constructor에 정의된 properties만 사용한다. 위와 같이 정의되면, age에 상관없이 name만 비교가 된다. 알고보니, Kotlin…
Android: ViewModel & LiveData
ViewModel은 Android Architecture Component중 하나로 android jetpack라이브러리 형태로 지원한다. 앞서 얘기했듯이, MVVM 모델의 ViewModel을 구현하는데 사용된다. Activity, Fragment들이 UI Controller로서 XML과 함께 화면 rotation의 경우처럼 UI가 destroy-create되는 상황에서도, ViewModel은 data를 들고 완전히 finished 되기 전까지 유지하게 된다. ViewModel은 어쨌든 UI Activity나 Fragment에 대응하고 UI가 완전히 finished되면, 같이 destory되기 때문에 lifecycle의존도가 있고, lifecycle패키지 아래에 존재한다. 사용하려면,…