2011-02-18 8 views
1

내 응용 프로그램은 매우 간단하며, 주 활동 -> 활동 1-> 활동 2이고, 일부 다운로드 작업을 수행하는 다른 작업자 스레드가 있습니다. 그리고 그들은 같은 과정에서 시작됩니다.응용 프로그램의 수명주기 : 프로세스가 종료 될 때 몇 가지 정리 작업을 수행하는 방법은 무엇입니까?

모든 활동이 삭제되거나 프로세스가 끝날 때까지 다운로드 스레드를 종료하고 싶습니다. Java에서는 매우 간단합니다. main 메소드에 깨끗한 코드를 추가하면됩니다. 그러나 나는 안드로이드에서 옳은 길을 모른다. 모든 작업이 시스템에 의해 재활용 될 수 있기 때문에 작업자 스레드의 깨끗한 코드를 어디에 둘 것인지 알지 못하며 전체 응용 프로그램의 끝점을 알지 못합니다.

누구나 나에게 아이디어를 줄 수 있습니까? 감사.

+0

android 2.1에서 Application.onTerminate()가 작동하지 않는 것 같습니다. 나는 worker thread (또는 service)에 대한 참조 카운트 만 추가 할 수있다. 참조 횟수를 0으로 줄이면 작업자 스레드를 종료하십시오. – loopscn

+0

나는 안드로이드 응용 프로그램을 종료하여 혼란 스러움을 발견했습니다. 나는 worker 스레드를 onDestroy 메소드에 깨끗한 코드를 넣는 Service로 변경하기로 결정했다. PC의 GUI 프로그램처럼 메뉴 명령을 명시 적으로 추가하여 전체 응용 프로그램을 종료하십시오. 도와 주신 분들께 감사드립니다. – loopscn

답변

1

도움이되는지 확실하지 않지만 주 활동에서 서비스를 시작하고 서비스의 onDestroy 메소드에서 모든 코드를 정리할 수 있습니다. 귀하의 응용 프로그램이 파괴 될 때 서비스가 파괴 될 것입니다

onTerminate는 에뮬레이터에서만 작동합니다 - 문서에 명시되어 있습니다.

+0

고마워. 신청서를 마감하기로 결정한 후에는 서비스와 함께 서비스가 예상보다 오래 지속되었습니다. 나는 안드로이드와 PC의 차이점을 이해하게되었다. – loopscn

+0

실제로 응용 프로그램을 닫으시겠습니까? 나는 당신이 단지 응용 프로그램을 닫을 수 없다고 생각합니다. 그것은 여전히 ​​기억 속에 있습니다. 나중에 휴대 전화가 리소스 등을 필요로 할 때 안드로이드에 의해 죽게 될 것입니다. 앱이 백그라운드로 갈 때 서비스가 종료되기를 원한다면 onPause/onResume 메소드를 사용하여 현재 활동을 가정해야합니다. 안드로이드 워드 프로세서에서 활동 라이프 사이클에 대해 읽어보십시오. 어쩌면 서비스를 돌보고 해당 클래스에서 모든 활동을 파생 onPause/onResume/etc 메서드를 사용하여 추상 활동 클래스를 만들 수 있습니다. (비록 이것이 좋은 접근이지만 100 % 확신하지 못함 =) – Alex

+0

btw, "exit"버튼을 만드는 것은 안드로이드에서 나쁜 습관입니다. 운영 체제는 사용자가 아닌 사용자를 처리해야합니다. – Alex

관련 문제