2014-04-04 3 views
4

Android의 ProcessesThreads 개념을 이해하는 동안 혼란 스럽습니다. 아래에서는 몇 가지 질문에 대해 설명합니다. 어쩌면 그것들은 어리석은 질문 일지 모르지만 나는이 질문에 대답하고 나의 의심을 분명히하기 위해 대답하도록 도와주세요.스레드, UI 스레드, 작업자 스레드, 비동기 작업

1) 스레드를 생성하면 어디서 실행됩니까? 메인 (UI) Thread?

2) 작성한 스레드가 worker로 백그라운드에서 실행되는 경우 ThreadAsyncTask (사용 방법은 스레드보다 낫다는 의미입니다)?

3) AsyncTask에서 스레드를 만들 수 있습니까?

+0

참조 http://stackoverflow.com/a/3264468/2480911 –

답변

7
1. If i create a thread where it will run? in Main(UI) thread/Worker Thread? 

는 메인 스레드가 아닌 작업자 스레드에서 실행됩니다.

2.If my created thread runs on worker `Thread` then what is the use of `AsyncTask` (I mean how it is better than thread)? 

AsyncTask

은 당신이 당신의 Activity ..for이 AsyncTask를 더 나은 정장 다운로드 진행 상황을 업데이트 할 그래서 여기에 인터넷에서 파일을 dowloading하는 메인 Thread..For 예와 통신하는 데 사용됩니다. onProgressUpdate() 메서드를 사용하여 UI를 업데이트합니다. UI 스레드와 쉽게 통신 할 수 있습니다.

3)Can we create a thread in Async task? 

예 당신이 그것을 만들 수 있지만 AsyncTask 아직 새로운 ThreadAsyncTask 내부를 만들 필요가없는 다른 Thread에서 실행되는 doInBackGround() 방법을 가지고 있기 때문에 쓸모가 없다.

6
  1. 활동에 스레드를 만드는 경우. 별도의 스레드로 실행됩니다. 기본적으로 액티비티는 UI 스레드에서 실행됩니다. 이는 메인 스레드라고도합니다.
  2. 비동기 작업은 UI 스레드를 차단하지 않는 backround 작업을 실행하는 데 사용되는 작업자 스레드입니다. 예 : 파일 다운로드.
  3. Asynctask 자체는 separte 스레드이며 자체주기를가집니다.
1

1) UI 스레드가 아니라 작업자 스레드로 실행됩니다.

2) 비동기 작업을 사용하면 작업 완료 전후에 특정 작업을 실행할 수 있습니다. 특히 인터넷 연결 또는 유사한 동작에서 데이터를 가져온 후 UI 값을 업데이트해야하는 경우에 유용합니다. 또한 progressdialogs에 좋습니다. 클래스의 일종 (AsyncTask를 확장)이므로 스레드를 시작하는 데 더 많은 구조가 있습니다.

3) 가능합니다. 이것이 당신에게 매우 유용할지 여부는 전혀 다른 질문입니다.