응용 프로그램의 '기본'스레드에서 새 작업자 스레드를 생성하고 있습니다. 이러한 스레드는 응용 프로그램이 살아있는 한 계속해서 작동해야합니다. 그리고 응용 프로그램이 종료되면 모든 작업 스레드를 정리해야합니다 (그 의미가 무엇이든간에). 이것을하기 위해서, 라이프 사이클 방법이 유일한 장소입니까? 애플리케이션이 종료 될 때 수신되는 의도/알림이 있습니까? 그렇다면 필요한 정리를 수행하기 위해 그러한 의도/통지에 브로드 캐스트 리시버를 등록 할 수 있습니까?응용 프로그램 종료시 작업자 스레드 종료를 수행하는 데 필요한 후크
감사합니다.
Ashok.
Code Snippet:
import android.app.Activity; import android.os.Bundle; 가져 오기 android.util.Log;
public class SomeThreadTest extends Activity { /** 활동이 처음 생성 될 때 호출됩니다. */ 스레드 t = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
t = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(15000);
Log.d("SomeThreadTest", "Thread wokeup now");
} catch (InterruptedException e) {
Log.d("SomeThreadTest", "Thread interrupted exception called!");
e.printStackTrace();
return;
}
if (Thread.interrupted()) {
Log.d("SomeThreadTest", "I'm interrupted!");
}
}
}
}, "TestThread");
t.setDaemon(true);
t.start();
}
}
포인터 주셔서 감사합니다. 나는 이것을 시도했지만 작동하지 않는 것 같습니다. 다음은 동일한 것을 보여주는 코드 스 니펫입니다. 내가 여기 뭔가 명백한 것을 놓치고 있다고 지적 할 수 있니? 나는 onCreate 라이프 사이클 메소드에서 다음을 수행하고 다른 메소드에서는 아무것도하지 않고있다. 코멘트 섹션에서 400 자 이상을 허용하지 않기 때문에 초기 질문의 일부로 코드 스 니펫을 게시하고 있습니다. 이 코드는 응용 프로그램에서 나온 후에도 '스레드 깨우기'를 인쇄하는 것으로 보입니다. –
[Android API] (http://developer.android.com/reference/java/lang/Runtime.html#addShutdownHook (java.lang.Thread)) ** Android에서 애플리케이션 라이프 사이클에는 VM이 포함되지 않습니다. 이 메소드를 호출해도 코드가 실행되는 것은 아닙니다. 대신 가장 적절한 라이프 사이클 알림 (Activity.onPause, 말하기)을 사용해야합니다. ** – caoxudong