Computer Science/Thread 처리

background thread 에서 UI thread 접근하기

728x90
반응형

 

 

1. Handler + Looper.getMainLooper()

 

  • 일반적인 쓰레드간 상호작용하는 방법인 Handler 이용

 

new Handler(Looper.getMainLooper()).post(new Runnable() {
	@Override
	public void run() {
    	// UI 스레드 작업
		imageView3.setImageBitmap(bitmap);
	}
});

람다식으로 간단하게 표현하면 다음과 같다

new Handler(Looper.getMainLooper()).post(() -> imageView3.setImageBitmap(bitmap));

 

2. Activity.runOnUiThread

 

  • UI 쓰레드의 메시지큐에 작업을 전달(post)하는 방법
  • activity 인스턴스에 액세스할 수 있는 경우에 사용87

runOnUiThread(new Runnable() {
	@Override
	public void run() {
		// UI 스레드 작업
		imageView3.setImageBitmap(bitmap);
	}
});

람다식으로 간단하게 표현하면 다음과 같다

 

 

 

 

runOnUiThread(() -> imageView3.setImageBitmap(bitmap));

 

3. View.post(Runnable) API

  • UI 쓰레드의 메시지큐에 작업을 추가
  • 해당 view 객체에 접근가능한 경우 사용

 

 

4. AsyncTask

  • 쓰레드나 Handler에 대한 지식없이 백그라운드 작업 후 UI 쓰레드에서 화면갱신 작업을 처리할 수 있게 코드를 단순화해주는 유틸리티 클래스
  • 이제 안쓰는 방식

 

 

 

 

 

 

 

 

참고

blog.yatopark.net/2018/01/19/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-ui-thread-%EC%82%AC%EC%9A%A9%EB%B2%95-handler-runonuithread-view-post/

kyleslab.tistory.com/41

728x90
반응형

'Computer Science > Thread 처리' 카테고리의 다른 글

동기/비동기, 동시성/병렬성  (0) 2021.04.30
Android Thread 처리 방법  (0) 2021.04.29