목록프로그래밍/코틀린 안드로이드 (23)
불로구
라이브데이터란? - 옵저버 패턴을 사용하여 데이터의 변화가 발생 시 콜백으로 받아 처리 - LifeCycleOwner를 통해 안드로이드의 LifeCycle을 알고 있기 때문에 필요하지 않을 땐 콜백을 실행하지 않는다. - 메서드가 getLifeCycle() 뿐인 단일 메소드 인터페이스 클래스 장점 1. Data와 Ui간 동기화 - 옵저버 객체를 통해 데이터의 변화가 일어나는 곳마다 매번 UI를 업데이트 2. 메모리 누수가 없다 - 안드로이드의 생명주기와 연결되어 메모리상에서 스스로 해제 3. Stop 상태에서 Crash가 발생하지 않는다. - 옵저버의 생명주기가 비활성화일경우 이벤트 수신x 4. 최신 데이터 유지 및 자원 공유 - LiveData를 상속하여 클래스를 구현하거나 싱글톤을 이용하여 시스템을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BYio6/btq3ghE4mwy/AzjB2ezST5AvrdUkiBQgR0/img.png)
데이터 바인딩이란? - UI요소와 데이터를 선언적 방식으로 결합할 수 있게 도와주는 라이브러리 - UI요소에 연결하기 위해 필요한 코드를 최소화 가능 - findViewId 선언 x , 자동 - RecyclerView에 각 item을 자동 set - data가 바뀌면 자동으로 View 변경 가능 - MVVM & MVP 패턴 구현에 용이 준비 plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' //추가 } android { ..... //추가 dataBinding { enabled = true } } // 환경에 따라 다름 def archLifecycleVersion = '2.2.0' implementation "andro..
Activity -> Fragment 액티비티에서 프래그먼트로 데이터를 전송하기 위해선 Bundle이란 클래스를 사용한다. Bundle이란? -> 여러가지 타입의 값을 저장하는 Map 클래스 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val fragmentOne : FragmentOne = FragmentOne() val bundle : Bundle = Bundle() bundle.putString("hello","hello") fragmentOne.arguments = bundle } -> 프래그먼트의 arguments를..
쓰레드란? - 프로세스 내에서 실제로 작업을 수행하는 주체 - 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다. - 두개 이상의 스레드를 멀티 쓰레드라고 한다. - 안드로이드에는 MainThread와 다른 Thread가 있다. - MainThread는 한번에 하나만 가능하며, 앱이 끝날때까지 정지 불가 -> 정지 시 crash 발생 - 다른 Thread는 한번에 여러가지 일을 할 수 있다. runOnUiThread 란 - 현재 쓰레드가 UI 쓰레드라면 UI 자원을 사용하는 행동에 대해 즉시 실행 - 현재 쓰레드가 UI 쓰레드가 아니라면 UI 쓰레드의 자원 사용 이벤트 큐에 들어감 쓰레드 사용법 버튼을 눌렸을 때 스레드 시작 val runnable: Runnable = object : Runnable {..