2011-08-15 2 views
3

강제로 닫는 오류가 발생하거나 응용 프로그램을 중단 점과 함께 일시 중지하면 안드로이드 응용 프로그램을 실행할 때 문제가 있습니다. 디버그 모드에서 '중지'를 누르면 앱이 종료되지 않고 대신 내 액티비티 스택의 첫 번째 액티비티가 열리지 만 매우 버그 상태입니다. 액티비티는 책 모음이며 강제 종료 또는 중지 후에 열리면 모든 사용자 책이 사라지고 옵션 메뉴의 레이블이 사라지고 (아이콘은 그대로 있지만) 거의 모든 작업 결과가 표시됩니다. 힘이 가깝다.강제 닫기가 안드로이드 응용 프로그램을 종료하지 않고 버그가있는 상태에서 이전 활동을 엽니 다.

기본적으로 디버그 모드에서 응용 프로그램을 중지하거나 강제 종료로 실행하면 전체 응용 프로그램이 종료되지 않고 버그가있는 상태에서 첫 번째 활동이 열리는 것이 궁금합니다.

강제 종료가 한 번 발생하고 스택 추적을 가져 오지 않았기 때문에 특정 코드를 제공 할 수 없습니다. 나는 이것이 매우 일반적인 질문이라는 것을 알고 있으며, 나는 그 정보가 너무 적어서 나는 다른 누군가가 비슷한 것을보고 싶었을 뿐이라는 것을 알고있다.

편집 : 강제 종료가 현재 활동을 닫고 스택에서 이전 활동을 열려고 시도하는 것처럼 보입니다. 그러나 어쨌든 내 응용 프로그램 컨텍스트가 파괴되기 때문에 이전 활동이 열리면서 응용 프로그램 컨텍스트 (예 : 사용자의 라이브러리에있는 책)에서 정보를 찾을 때 아무 것도 없습니다.

+0

문제가 해결 되었습니까? 수용 가능한 대답이 제시되어 있습니다. Android 태그는 답이없는 질문으로 인해 파열하고 있으며 가능한 한 많이 닫으려고합니다. 이 문제에 대한 귀하의 도움은 크게 감사하겠습니다. – Merlin

+0

네, 죄송합니다.이 질문에 대해 잊어 버렸습니다. – odiggity

답변

2

강제 종료로 실행하면 앱 프로세스가 종료됩니다. 액티비티 스택이 충돌 한 액티비티보다 활동이 뒤떨어져 있다면, 새로운 프로세스에서 액티비티 스택이 재시작됩니다. 프로세스가 종료되면 응용 프로그램 컨텍스트도 종료됩니다. 새 프로세스는 새로운 응용 프로그램 컨텍스트를 작성하므로 사용자가 데이터를 볼 수 없습니다.

이에 대한 설명은 http://groups.google.com/group/android-developers/browse_thread/thread/b274cfa64b17f535?pli=1을 참조하십시오.

특정 문제를 해결하는 한 가지 방법은 공유 데이터가로드 된 후 명시 적으로 true로 설정되는 플래그를 Application 개체에 추가하는 것입니다. 그런 다음 Activity의 onCreate()에서이 플래그를 확인하여 데이터가 사용 가능한지 확인할 수 있습니다. 플래그가 false이면 finish()를 호출 할 수 있습니다.

0

이것은 몇 차례 나 일어났습니다. 나는 두 번째 활동을 멈추고 두 번째 활동을 멈추지 않고 첫 번째 활동을 닫지 않고 두 번째 활동을 시작할 때 두 번째 활동을 멈추는 것으로 나타났습니다. 첫 번째 활동이 아직 실행 중이므로 최전방에 오게됩니다.

예. 활동 A가 실행 중입니다. 버튼을 클릭하면 B 액티비티가 열립니다. (액티비티 B) (액티비티 B) 어떤 이유로 액티비티 B가 종료됩니다. 활동 A는 여전히 실행중인 상태이므로 볼 수 있습니다.

+0

당신은 바로 열린 활동을 강제 종료하고 이전 활동을 재개하는 것처럼 보입니다. force close가 발생한 경우 onResume 메소드를 체크인 할 수있는 방법이 있는지 알고 있습니까? 그렇다면 활동을 마칩니다()? – odiggity

+0

이상한 콜백을 피할 수 있습니다. 다음 활동을 시작하기 전에 활동을 마무리하는 것이 좋습니다. 이상적으로 강제 종료가 발생하지 않도록하고 싶습니다. 강제 닫기를 방지하기 위해 전역 예외 처리기를 설정할 수 있습니다. 이것은 도움이 될 http://www.nomachetejuggling.com/2006/06/13/java-5-global-exception-handling/ –

+0

아이디어를 주셔서 감사합니다, 그러나 그들은 내가 찾고있는 것이 아닙니다. 다음 활동을 시작하기 전에 활동을 끝내는 것이 항상 가능하거나 바람직하지는 않습니다.그것이 활동 스택을 갖는 전체 지점이므로 사용자는 이전에 열었던 활동을 거꾸로 탐색 할 수 있습니다. 당연히 아무런 힘이 없어지는 것이 이상적이지만, 때로는 눈치 채지 못할 수도 있고 때로는 제대로 처리 할 수 ​​있기를 바랄 수도 있습니다. 마지막으로 가능한 한 발생에 가까운 예외를 처리하고 전역 예외 처리기를 피하십시오. – odiggity

관련 문제