시스템 메시지 안드로이드는 단말기에서 사건이 발생할 경우 각 사건에 대해 정해진 메세지를 발생 시스템 메세지 발생 -> 이에 반응하는 Broad Cast Recevier 동작 개발자가 각 사건에 대한 이름으로 Broad Cast Recevier 를 등록하면 OS가 찾아서 동작시키는 방식 안드 8.0 부터 사용할 수 있는 시스템 메시지 수 줄어들었음 안드 8.0 이상도 시스템 메시지를 발생시키는 Broad Cast Recevier 는 Manifest에 이름을 등록하여 사용이 가능 * 아래 공식문서에 나와 있는 Broad Cast Recevier 들은 Manifest에 등록하여 암묵적으로 사용이 가능 (안드 8.0 이상이여도 가능) https://developer.android.com/guide/compon..
Broad Cast Receiver 안드로이드 OS에서 특정 상황에 발생하는 메시지를 받아들여 동작하는 실행 단위 -> OS에서 방송을 하면 각 앱의 리시버가 동작 반드시 외부에서 접근하기 위한 이름을 가져야 함 (OS -> 앱 내부) 앱에서 안드 OS에게 방송을 요청해 방송하게 되면 BroadCastReceiver가 방송을 받아들여 동작 (같은 앱에 대해 요청해도) 실제로는 앱이 단말기에 설치되면 안드 OS가 앱 내부의 BroadCastReceiver를 목록화 해서 정리 안드 OS에서 어떤 사건이 발생 -> 관련 이름으로 지정된 BroadCastReceiver를 찾아 동작 시킴 앱에서 지정된 BroadCastReceiver 이름을 전달해 실행을 요청 -> 이 이름에 해당하는 앱의 BroadCastRec..
RunOnUiThread handler 대신 개발자가 발생 스레드에서 일부 코드를 Main Thread에서 처리할 수 있도록 하는 메서드 isRunning = true val thread1 = object : Thread() { override fun run() { super.run() while (isRunning) { // 개발자가 발생시킨 스레드에서 오래 걸리는 작업을 수행 SystemClock.sleep(500) val now2 = System.currentTimeMillis() Log.d("test", "오래 걸리는 작업 : ${now2}") // 메인 스레드에서 처리 runOnUiThread { // 고차함수로 처리하는 방법 binding.textView.text = "runOnUiThread..
Handler(화면처리) 네트워크 처리나 오래 걸리는 작업 -> 개발자가 발생시킨 스레드에서 처리 안드 8.0 미만 -> 개발자 발생 스레드에서 화면처리 할 경우 오류 나기 때문에 handler로 처리 Handler를 이용하는 모든 처리는 Main Thread에서 수행 (따라서 handler를 사용하면 화면처리를 main thread에서 가능) * 개발자가 발생시킨 스레드에서 중간중간 메인 스레드에서 작업을 요청하고 싶으면 handler로 작업을 요청!! var isRunning = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.i..