본문 바로가기
Development/Android

[안드로이드] Thread 사용하기

by 푸민 2015. 9. 2.
반응형



안녕하세요 푸민입니다.

기본적으로 안드로이드는 MainThread 라고 UI 전용 Thread가 계속해서 메모리에 올라가있습니다.

무슨말이냐면 우리가 실제로 보고있는 화면을 보여주는 게 UI Thread라고 보면 됩니다.

UIThread는 무엇인가 다른 작업이 10초 이상 하면서 화면이 멈춰있게 되면 안드로이드에서 ANR을 표시하게되는데요. ANRApplication Not Responding. 즉 어플리케이션이 답이 없는것을 나타내는것 입니다. 쉽게 말해서 앱이 죽는것이지요!


ANR은 안드로이드에서 직접 제어를 하기 때문에 우리가 무엇인가 무거운 작업을 할때는 UI Thread를 사용하면 안됩니다. 그렇게 때문에 따로 커스터마이징한 Thread를 만들어서 작업을 하는데요.

어떻게 만드는지 한번 알아볼까요?


먼저 Thread를 상속받은 클래스를 만들어 줍니다.

보통은 이너클래스로 만들어서도 보조적으로 많이 사용해요. ㅎㅎ


 코드 

private class MyThread extends Thread {

@Override

public void run() {

//여기서 작업을 하면 됩니다.

}

}


 설명 

클래스를 만든뒤에 run() 메소드를 오버라이딩해서 작업할 내용을 run() 메소드 안에 넣어 주시면 됩니다.



그러면 Thread 클래스 작업을 끝.

이제 인스턴스화 시켜서 사용해볼까요?


 코드 

MyThread myThread = new MyThread(); 

myThread.start();


myThread.stop();

myThread.interrupt();


 설명 

정말 쉽습니다!
Thread를 생성한 뒤에 start() 메소드만 호출하면 끝!

그리고 종료할때는 stop() 메소드 또는 interrupt() 메소드를 불러주면되요 ㅋㅋ


Thread를 잘 사용하면 굉장히 좋지만 잘 못사용 한다면 메모리 관리의 어려움을 겪을수 있습니다.

그리고 한가지 주의해야할 사항이 있는데요.

우리가 보는 화면 즉 UI 들에 대한 접근은 UIThread 밖에 하지 못합니다.

그렇기 때문에 커스터마이징한 Thread에서 작업을 한 뒤에 화면에 표시를 하거나 뭔가 보여주고 싶다면 Handler 클래스를 활용하여 화면에 표시해주면 됩니다!

반응형

댓글