ProgramingTip

AsyncTask와 Thread / Runnable의 차이점

bestdevel 2020. 12. 27. 19:39
반응형

AsyncTask와 Thread / Runnable의 차이점


저를 당혹스럽게하는 질문이 있습니다.

SDK 문서에서 권장하는대로 자연스러운 느낌을주는 GPS / 위치 항목 가져 오는 오기와 같은 다른 노래에서 작업을 수행하고 상상해보세요.

그래서 여기에 질문이 있습니다.

  1. ANDThread 를 통해 백그라운드 만들기AsyncTask

  2. 생성 Thread thread1 = new Thread(new Runnable()... 및 구현 run()?


AsyncTask 는 새.입니다. 일부를 수행 하고 완료시 호출 된 작업을 수행하고 완료시 호출 된 작업 (일반적으로 UI 표준)에서 결과를 사용하기위한 클래스 몇 개의 실행 가능 기능을 사용하는 단일 생성 및 메시징 처리의 모든 복잡한 작업을 처리하는 일뿐입니다.

AsyncTask를 사용하면 UI 내용을 쉽게 사용할 수 있습니다. 이 클래스를 사용하면 코드 및 / 또는 처리기를 조작하지 않고 백그라운드 작업을 수행하고 UI에 결과를 게시 할 수 있습니다.

AsyncTask는 Thread 및 Handler 주변의 도우미 클래스로 설계 구성 표준 스레딩 프레임 워크를 구성하지 않습니다. AsyncTasks는 짧은 작업 (최대 몇 초)에 이상적으로 사용되어야합니다. 장기적인 장기 실행해야하는 경우 다음과 같이 java.util.concurrent 패키지에서 제공하는 다양한 API를 사용하는 것이 좋습니다. Executor, ThreadPoolExecutor 및 FutureTask.

그 결과가 UI 정의에 게시되는 계산에 의해 수행됩니다. 작업은 Params, Progress 및 Result라는 3 가지 일반 유형과 onPreExecute, doInBackground, onProgressUpdate 및 onPostExecute라는 4 단계로 정의됩니다.

의 Runnable 인터페이스는 자바 스레딩의 핵심입니다. 실행 가능한 인터페이스는 인스턴스가 실행되는 모든 클래스에 구현되어야합니다.

또한 이 블로그 에서 인용하면 :

간단한 코딩이 필요한 경우 AsyncTask를 사용하고 SPEED가 필요한 경우 Java Thread를 사용하십시오.


주요 차이점 :

  1. AsyncTask 는 자연스러운 실행되고 그 결과가 UI 정의에 게시되는 계산에 의해 표현되는 작업입니다. HandlerUI 스레드에서 사용하는 게시하거나 동기화를 구현하여 객체 속성을 직접 변경 하지 않는 일반 메시지는 수행 할 수 없습니다 .

  2. 표준 성능 과 관련하여 개발자 가이드에서 권장하는대로 ,

    명심해야 할 몇 가지 중요한 성능이 있습니다. 첫째, 기본적으로는 AsyncTask 개체를 생성하는 단일로 푸시 앱입니다. 당신의 메시지를 차단할 수 있습니다. 따라서 AsyncTask를 사용 하여 5ms 미만의 작업 항목을 처리 하는 것이 좋습니다. .

    정상적인 그러나 스레드 는 장기 실행 작업에 사용할 수 있습니다.

일반 자바 스크립트는 Android 프레임 워크에서 제공하는 HandlerThread 와 달리 Android에 유용하지 않습니다 .

루 퍼가있는 새 프로그램을 시작하기위한 편의 클래스입니다. 그런 다음 루퍼를 사용하여 클래스를 생성 할 수 있습니다. start ()는 여전히 호출되어야합니다.

자세한 내용은 아래 게시물을 참조하십시오.

같은 대 AsyncTask 대 같은


또한 Android v4.04부터는 AsyncTasks하위 버전과의 한 번에 잃지 않는 한 번 둘 이상을 번거롭지 않은 점을 고려 합니다. 조심하세요!


AsyncTask 클래스의 한 가지 명백한 단점은 Android 3.0 이후에 시작 시간의 순서에 따라 작업이 실행됩니다. 'executeOnExecutor (Executors.newCachedThreadPool ())'을 호출하여 작업을 실행하지 즉 작업이 하나씩 실행됩니다. 이 방법은 자신의 풀을 생성합니다.


지원 라이브러리에서 새 작업 스케줄러를 사용하는 것이 좋습니다.

참조 URL : https://stackoverflow.com/questions/17474818/difference-between-asynctask-and-thread-runnable

반응형