2012-11-01 4 views
0

비애를 본인은 HTC 하나 X.로이드 활동주기는

간단한 설명에있어 테스트 애플리케이션 가지고

내 주요 활동이 탭 애플리케이션이다 (사용하는 단편). 탭 중 하나에서 다른 활동으로 이동하는 버튼이 있습니다.

Intent myIntent = new Intent(view.getContext(), NoteActivity.class); 
startActivity(myIntent); 

이 모든 것이 정상적으로 작동합니다. 그러나 NoteActivity에는 텍스트 필드가 있으며 화면 잠금이 켜지면 NoteActivity가 즉시 삭제되고 사용자가 잠금을 해제하면 내 "기본"활동이 즉시 시작됩니다.

또한 mainactivity -> noteactivity에서 이동하면 내 mainactivity는 파괴되지 않지만 다시 돌아 가면 (메모가 끝나고 "save"를 클릭하면) 음절 기능이 항상 손상됩니다. 떨어져.

분명히, 나는 ondestroy에 텍스트 필드 내용을 저장하고 oncreate에 다시 삽입해야하지만 화면 잠금이 활성화 될 때 내 두 번째 활동이 항상 파괴된다는 것을 이해하지 못합니까? 내 주요 활동은 결코 파괴되지 않습니다.

안드로이드가 이러한 수명주기 결정을하는 이유에 대해 조금 확실하지 않습니다. 누군가가 어떤 의견을 가지고 있다면, 나는 그것을 듣고 싶습니다.

답변

0

많은 플랫폼/언어에서 개발자는 메모리 관리를 담당합니다. 이로 인해 많은 버그와 성능 저하 문제가 발생합니다. 안드로이드의 디자이너들은 주로이 책임을 개발자와 OS에서 빼앗 았습니다. 안드로이드는 포 그라운드에 있지 않을 때 언제든지 당신의 액티비티를 파괴 할 수 있으므로, 당신의 액티비티가 백그라운드로 가기 전에 호출되는 onPause() 프로비저닝이 제공됩니다.

Android가 귀하의 활동을 파괴하는 이유가 결정적이지 않고 다른 요인들에 따라 달라지는 이유; 얼마나 많은 메모리가 장치에 있는지; 얼마나 많은 메모리가 무료인지; 실행중인 다른 앱과 서비스; 어떤 커널 거버너와 절전 정책이 사용 중인지 등등.이 결정 요인을 크고 복잡한 작업으로 만들려면 일단 활동이 배경으로 넘어 가면 안드로이드는 그것을 파괴 할 수도 있고 때로는 콜백을하지 않을 수도 있습니다. 따라서 필요에 따라 라이프 사이클을 사용하여 상태를 저장하고 복원해야합니다.

익숙해지면 실제로 이해하기 쉽고 작업하기가 쉽습니다. 나는 윈도우 배경에서 왔고 익숙해지기까지 약간의 시간이 걸렸지 만 지금은 잘 알고있다. 나는 더 좋거나 나쁘지는 않지만 모바일 장치를위한 좋은 해결책이라고 말할 것입니다.

처음에는 데스크탑에서 운영 관리자를 찾고 응용 프로그램에서 system.exit()와 같은 일을하지만, 스스로 관리하기 위해 안드로이드를 남겨 두었고 훨씬 더 나은 성능을 보였습니다.

수명주기에 따라 생활하십시오.

+0

Simon, 답장을 보내 주셔서 감사합니다. 나는 내가 활동 라이프 사이클 아이디어에 정통하다고 생각한다. 내 질문은 왜 한 활동이 다른 활동보다 "가치가있는"이유인지에 관한 질문이었습니다. 내가 설명하는 시나리오는 "스택"기능 (마지막 활동이 맨 위, 뒤로 버튼이 이전 활동으로 돌아가는 곳)을 이끌고 내 마음 속에서는 내 앱, NoteActivity, 현재 하나 인 화면은 항상 파괴되므로 스크린이 다시 활성화 된 후 내 메인 앱의 onCreate()가 항상 호출됩니다. – Mathias

+0

또한 흥미로운 것은 HTC One X에서만 발생하며 다른 Android 휴대 전화에서는 발생하지 않습니다. – Mathias

+0

미안하지만, 나는 장사 할 생각이 없었다. 나는 당신의 OP에서 당신이 그것에 익숙하지 않다고 생각했습니다. 에이.기본 앱 onCreate()가 호출되면 앱이 삭제 된 것이지 작업은 삭제 된 것입니다. 비. Why One X - 위의 영향을 줄 수있는 요인 목록을 참조하십시오. 기음. 왜 하나의 활동이 아니라 다른 것 - 자원 사용량입니까? Dalvik은 자원 사용량에 대한 프로파일 앱을 제공하므로 안드로이드는 포 그라운드에서 벗어나면 어느 것이 우선 순위가 높은지 결정할 수 있습니다. – Simon

관련 문제