2010-11-30 12 views
17

이 두 메소드 (클래스)의 차이점은 무엇입니까?Android Asynctask 대 Runnable 대 timertask 대 서비스

매 5 초마다 실행되는 앱을 실행하고 완료되면 CPU가 대기 모드에있을 때 앱을 실행할 수 있습니다. 그래서 응용 프로그램은 wakelock에 바인딩되지 않습니다.

감사합니다,

+0

어떤 일을하는지에 따라 다를 수 있습니다. UI가 5 초마다 팝업되는 것을 원하지 않는다고 가정하기 때문에 백그라운드에서 실행하고 매 5 초마다 무언가를 처리 할 수 ​​있습니까? – CrackerJack9

답변

31

처음 세 사이의 차이는 당신을 위해 수행 된 작업의 바로 양

Shafqat. 그리고 Servicefundamental Android application component입니다.

AsyncTask 새로운 스레드에서 일부 작업을 수행하고 완료 될 때 호출 된 스레드 (일반적으로 UI 스레드)에서 결과를 사용하기위한 편리한 클래스입니다. 그것은 몇 개의 runnables를 사용하는 래퍼이지만 스레드를 생성하고 스레드 간의 메시징을 처리하는 모든 복잡한 작업을 처리합니다.

Runnable 인터페이스는 Java 스레딩의 핵심입니다. Runnable 인터페이스는 스레드가 인스턴스를 실행하려고하는 모든 클래스에 의해 구현되어야합니다.

TimerTask은 표준 Java의 일부이며 (Runnable) 코드의 일부를 지연 실행 또는 반복 실행하는 데 사용할 수 있습니다. 그것의 사용은 discouraged on Android입니다. 대신 Handler를 사용할 수 있습니다.

서비스는 Android 애플리케이션의 독립적이며 UI가없는 부분으로 사용할 수 있습니다. 자체 스레드를 실행하고 생성 할 수 있으며 예를 들어 AlarmManager을 통해 UI 또는 의도로 시작할 수 있습니다.

원하는 스레드가 자신의 스레드를 만들고 작동하는 서비스라고 생각합니다. 작업이 끝나면 안드로이드에서 가비지 컬렉터가 시작될 때 메모리가 해제 될 것입니다. 사용자가 제어하지 않는 것이고 좋은 일입니다.

AlarmManager를 사용하면 지정된 간격으로 인 텐트를 브로드 캐스트하고 심지어 장치를 깨우도록 제어 할 수 있습니다. 서비스에 BroadcastReceiver를 정의하고 매니페스트에 선언하면됩니다.

질문의 마지막 부분에 대해 정말로 이해할 수 없으므로, 성취하고자하는 것에 대해 좀 더 명확히 설명하십시오.

+0

나는 아직도 서비스가 Runnable과 어떻게 다른지 모르겠다. ..? 서비스 대신 실행 파일을 사용할 수있는 것 같습니다. 또한 Service에서 어떤 메소드가 호출되는지? 예를 들어, Runnable()에서 run() –