Deperecated/Android_강의 55

안드로이드 - RunOnUiThread

1. RunOnUiThread란 - RunOnUiThread 메서드는 개발자가 발생시킨 일반 Thread에서 코드 일부를 Main Thread가 처리하도록 하는 메서드이다. - JAVA에서는 메서드로 제공되나 Kotlin에서는 람다식으로 제공되고 있으므로 작성하는 것이 간편하다. - 전의 내용에서는 네트워크나 5초 이상 걸리는 작업들은 Main Thread에서 작업이 안되기 때문에 일반 Thread에서 작업하다가 화면에 대한 처리가 필요하면 Handler나 AsyncTask를 이용하는 방법으로 화면 처리만 Main Thread에게 맡겼다. - 하지만, 둘 다 클래스를 상속받아야하므로 작업량이 많아졌는데, RunOnUiThread메서드를 사용하면 그 때 그 때 원할 때 마다 Main Thread에 작업을 ..

안드로이드 - AsyncTask

1. 개요 스레드를 사용하면서 UI 객체에 접근하려면 핸들러를 통하면 된다. 하지만 Message 객체를 사용할 경우 코드가 길어진다는 문제가 생긴다. AsyncTask는 하나의 클래스 안에 스레드로 동작하는 부분과 UI 객체에 접근하는 부분을 함께 넣을 수 있도록 합니다. 이 때문에 스레드를 사용하는 하나의 작업 단위가 AsyncTask라는 하나의 클래스로 만들어질 수 있다. 1. AsyncTask - AsyncTask는 비 동기 처리를 위해 제공되는 클래스 이다. - 개발자가 발생 시키는 쓰레드와 핸들러의 조합으로 쓰레드 운영 중 화면 처리가 가능했던 구조를 클래스로 제공하는 것이다. - AsyncTask를 사용하면 개발자가 발생시키는 일반쓰레드와 화면 처리를 위해 MainThread를 이용하는것을 ..

안드로이드 - Handler를 통한 화면 처리

1. 개요 1-1) 메인스레드 메인스레드는 애플리케이션 객체인 액티비티, 브로드캐스트 수신자 등과 새로 만들어지는 윈도우를 관리하기 위한 메세지 큐(Message Queue)를 실행한다. 1-2) 메세지 큐 순차적으로 코드를 수행하는 자료구조 1-3) 핸들러 메세지 큐를 이용해 메인 스레드에서 처리할 메세지를 전달하는 역할을 담당한다. 특정 메세지가 미래의 어떤 시점에 실행되도록 스케줄링을 할 수 있다. 2. Handler를 통한 처리 2-1) obtainMessage() -> Intent와 비슷한 개념 - 호출의 결과로 메세지 객체를 리턴. 2-2) sendMessage() - 메세지를 메세지 큐에 넣는다. 2-3) handleMessage() - 메소드에 정의된 기능이 수행됨 - 코드가 수행되는 위치..

안드로이드 - Handler를 이용한 반복 작업

1. Main Thread에서의 반복 - Main Thread에서 처리하는 코드(Activity내의 코드) 중에 일정 작업을 계속 반복 처리해야할 경우가 있다. - 이 때 무한 루프를 쓰면 화면처리가 불가능하다. - Handler를 통하면 원하는 코드를 Main Thread로 하여금 반복해서 작업하는것이 가능하다. -> Handler를 통해 작업하면 Android os가 한가해질 때 마다 작업을 요청할 수 있다. 2. Handler - Handler는 개발자가 안드로이드 OS에게 작업 수행을 요청하는 역할을 한다. - 개발자가 작업을 요청하면 안드로이드 OS는 작업을 하지 않을 때 개발자가 요청한 작업을 처리하게 된다. - 이 처리는 Main Thread에서 처리한다. - 5초 이상 걸리는 작업은 불가하..

안드로이드 - 쓰레드

1. 안드로이드 쓰레드 - 쓰레드는 여러 처리를 비 동기적으로 처리하기 위해 사용한다. - 안드로이드는 비 동기적 처리 외에 네트워크에 관련된 코드는 전부 쓰레드로 운영해야 한다. *동기적 작업 - 위에서 아래로 순차적으로 코드가 실행되며 작업하는 것. *비동기 작업 - 여러개를 왔다갔다왔다갔다 하면서 마치 동시에 실행되는 것처럼 작업하는 것. 2. ANR 현상(응답 없음) - 안드로이드 OS는 Activity의 코드를 처리하기 위해 쓰레드를 발생시킨다. 여기서 발생되는 쓰레드를 Main Thread라고 부르며, UI Thread(메인쓰레드에서만 화면 처리가 가능하기 때문에)라고 부르기도 한다. - Main Thread가 현재 작업을 하지 않을 때만 화면 작업이 가능하며 Main Thread가 바쁠 때 ..

안드로이드 - 권한 및 쓰레드

1. 권한(Permissions) - 안드로이드는 개인 정보, 센서, 카메라, 저장소 등 개인 정보와 관련된 기능을 사용하기 위해서 권한을 등록해야 한다. - 권한 등록은 사용자가 애플리케이션을 다운로드 받거나 설치하면 애플리케이션 정보에서 확인이 가능하다. - 권한 등록의 목적은 사용자에게 애플리케이션이 어떠한 기능을 사용하는지 알려주는 목적으로 사용한다. - 권한 등록을 필요로 하는 기능을 사용할 때 권한을 등록하지 않으면 오류가 발생하여 개발자는 반드시 권한을 등록해야 하고 등록된 권한은 사용자에게 고지된다. - 안드로이드 마시멜로우 버전부터 개인 정보와 관련된 권한은 애플리케이션 내부에서 고지하고 사용 허가를 맡도록 변경되었다. - 권한 사용 시 반드시 사용자에게 고지하고 이를 승인 받는 작업이 ..

안드로이드 - Style Notification

1. Style Notification - 안드로이드 4.1에 새롭게 추가된 부분으로 4.0 이하 버전에서는 기본 알림 메세지로 표시된다. - 안드로이드 4.1 이후 부터는 알림 메세지를 접었다 펼쳤다 하면서 부가 정보를 표기할 수 있다. 2. Big Picture Style - 메세지를 펼쳤을 때 이미지를 표시할 수 있다. 1. 빌더 세팅 2. Big Picture Style 세팅 3. Notification 객체 만들어서 띄우기 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener {..

안드로이드 - Pending Intent

1. Pending Intent란? - Notification 메세지를 통해 어플리케이션의 Activity(화면)를 실행할 수 있는데 이 때 사용하는것이 Pending Intent이다. - Pending Intent를 통해 실행되는 Activity로 데이터를 전달할 수도 있다. 2. 구성방법 1. Notification 빌더 생성 2. Intent 생성 - *Intent: 안드로이드 OS에게 저 이거 실행시켜주세요 시키는 것. - 이 부분에서 설정된 Activity로 이동할 수 있고, data도 보낼 수 있다. 3. pendingIntent에 메세지를 클릭한 후 이동할 Activity 설정 4. NotificationManager에 최종 연결 button3.setOnClickListener { view ..

안드로이드 - Notification

1. Notification이란? - Notification은 애플리케이션과 별도로 관리되는 메세지이다. - Notification 메세지를 OS에게 요청하면 OS는 알림 창 영역에 알림 메세지를 표시한다. - 화면을 가지지 않는 실행단위에서 메세지를 표시할 때 주로 사용한다. 2. 특징 - 사용자가 메세지를 확인하거나 제거하기 전까지 메세지가 유지된다. - 메세지를 터치하면 지정된 Activity가 실행되어 애플리케이션 실행을 유도할 수 있다. - 안드로이드 4.0 이하, 4.0~7.1버전, 그 이상 버전으로 3가지 Notification이 있다. - 안드로이드 8.0부터는 노티피케이션 채널이라는게 생겼다. 3. Notification Channel - 안드로이드 8.0부터 새롭게 추가된 기능으로 사용..

안드로이드 - 다이얼로그

1. 다이얼로그란? - 개발자가 필요할 때 사용자에게 메세지를 전달하는 용도로 사용 - 다이얼로그가 나타나 있을 때는 주변의 뷰를 누를 수 없다. - 메세지 전달이나 입력 등의 용도로 사용된다. 2. 기본 다이얼로그 - 총 3개의 버튼을 배치할 수 있다. - 아이콘, 제목, 본문내용, 최대 버튼 3개 // 1. 버튼을 누르면 기본 다이얼로그가 뜨게 button4.setOnClickListener { view -> var builder = AlertDialog.Builder(this) // 아이콘 builder.setIcon(R.drawable.images) // 제목 builder.setTitle("기본 다이얼로그") // 본문 내용 builder.setMessage("본문 입니다") //버튼을 눌렀을 ..