2014-05-12 2 views
-1

나는 안드로이드 응용 프로그램을 쓰고 있습니다. 신청서에는 4 가지 활동이 있습니다. 모든 활동은 상호 독립적입니다.Android 애플리케이션/프로세스의 라이프 사이클?


내 응용 프로그램에서는 소켓 통신과 서비스를 사용하고 싶습니다. 두 활동은 첫 x ​​째 활동이 시작될 때 시작되며 마지막 활동이 종료 될 때 중지되어야합니다. 시작 활동은 사전 설정되어 있으므로 시작시 문제가 없습니다. 그러나 마지막 활동은 무작위입니다. 이 상황에서 어떻게 서비스를 중지하고 소켓을 닫아야합니까 ?? "응용 프로그램"이 종료 될 때 콜백이 있습니까? 나는 안드로이드 액티비티 라이프 사이클을 보았지만, 전체 프로세스에 대해서는 아무 것도 말하지 않았다. ...

답변

0

서비스에 AIDL 인터페이스를 사용하고 각 활동을 등록/등록 취소하는 방법은 어떻습니까? 그런 다음 서비스 카운트 횟수를 활성화하고 카운터가 0에 도달하면 소켓을 종료하고 종료하십시오.

0

oncreate 및 onDestroy - 앱의 전체 수명을 나타냅니다. 이 쌍은 앱이 메모리에로드되거나 메모리에서 언로드 될 때 호출됩니다. 이 두 가지는 활동의 전체 수명을 나타냅니다. 처음로드 될 때 onCreate가 트리거되고 앱이 처리 될 때 onDestroy가 트리거됩니다. 앱의 전체 수명 동안 필요한 자원을 설정하고 파괴하고 자원을 낭비하는 데 분명히 사용해야합니다. 실제로는 상황이 더 미묘 할 수 있습니다. 시스템은 onDestroy를 호출하지 않고 앱을 중지 할 수 있으며 onCreate 이벤트를 트리거하는 앱을 다시 시작할 수 있습니다.

onStart 및 onStop - 앱이 표시되는 기간을 괄호로 묶습니다. 응용 프로그램이 모달 대화 상자를 말하고있을 수 있습니다. 앱은 표시되지만 사용자와 상호 작용하지 않습니다. 이 이벤트 쌍은 앱의 전체 수명 동안 여러 번 트리거 될 수 있습니다. 간단한 앱은 앱이 여전히 메모리에 있고 리소스 또는 상태를 잃지 않기 때문에 대부분 onStart 및 onStop 이벤트를 무시할 수 있습니다. onStart와 onStop의 주된 용도는 앱에 사용자와 상호 작용하지 않는 동안 변경 사항을 모니터링 할 수있는 기회를 제공하는 것입니다. 이 문제를 더욱 혼란스럽게하기 위해 onStart 이벤트 이전에 발생하는 onRestart 이벤트가 있지만 앱이 onStart를 처음으로 실행 한 것이 아닌 경우에만 - 즉 다시 시작해야합니다.

onResume 및 onPause - 앱이 포 그라운드에 있으며 사용자와 상호 작용하는 기간을 나타냅니다. 이 이벤트 쌍은 평생 동안 여러 번 발생할 수 있습니다. onResume 이벤트는 앱이 포 그라운드에 있고 일반적인 작업을 수행 할 때 발생합니다. onPause 이벤트는 사용자가 다른 앱으로 전환 할 때 발생합니다.

당신이 모험의 라이프 사이클에 대해 많은 것을 배울 수

는 : http://www.i-programmer.info/programming/android/5966-android-adventures-lifecycle-and-state.html

편집 :

어쩌면이 당신을 도울 것입니다 : 여기 How to handle activity life cycle involving sockets in Android?

을 그리고가 좋은 가이드 그것에서보세요 사용 방법 : http://tacticalnuclearstrike.com/2011/03/a-way-of-using-sockets-in-android/

+0

항상 호출 할 수 없습니다들의 OnDestroy – Suvitruf

+0

@Domi가 활동 ... – Griffin

+0

죄송합니다 아니 그것입니다 - 읽기 오븐 그것 - 나는 "어떻게 안드로이드에서 소켓을 다루는가"에 대한 답을 얻은 질문을 가지고 편집했다. 항상 MainActivity를 가지고 있고 onDestroy를 무시할 수있다. – DominikAngerer

관련 문제