2012-02-21 3 views
1

휴대 전화가 특정 유형의 충전기에 연결되어 "자동차 모드"또는 "운전 모드"에있을 때 응용 프로그램에서 발생하는 문제를 처리하려고합니다.안드로이드 - onDestroy() 후 UI 요소에 대한 범위 축소

실행중인 응용 프로그램에서 onDestroy()가 호출되고 onCreate()가 즉시 따라 오면 응용 프로그램이 정상적으로 다시 시작됩니다. 그러나 새로 생성 된 주 활동에서 UI 요소를 업데이트하는 이후의 호출은 아무 효과가 없으며 레이아웃에서 범위를 잃은 것처럼 보입니다.

RelativeLayout splash = (RelativeLayout) findViewById(R.id.splash); 
    splash.setVisibility(View.VISIBLE); 

왜 내가 비난하고있는 onDestroy()가있을 수 있습니까? 나는 내가 필요하다고 생각하지 않아서 데스 로이에서 많은 정리를하지 않는다.

+0

동일한 문제가 있습니다. 그것을 해결 했습니까? – takluiper

답변

0

onDestroy()이 호출 될 때 Activity이 UI에서 분리되었으므로 UI ​​호출이 감지되지 않습니다. 스플래시를 표시하려면 onCreate(), onResume() 또는 onPause() 일 때 View.VISIBLE으로 설정하십시오. 나는 onPause()가 다른 무엇이든지 행동 할 것인지 완전히 확신하지 못합니다.

+0

죄송합니다. onCreate에 대한 새 호출 후 새 Activity에서 발생하는 UI 호출 – TomBomb

+0

이 경우 레이아웃의 새 인스턴스를 인스턴스화하기 위해'setContentView() '를 호출하고 있습니까? 이전 버전은 오래된 'Activity's' 컨텍스트의 일부이며 파괴되었으므로 새로운 버전이 필요합니다. – DeeV

+0

예 setContentView()를 다시 호출 할 때 주 활동을 일반적으로 인스턴스화하는 것과 다른 방법을 사용하지 않습니다. – TomBomb

0

전화가 회전하면 활동이 삭제되고 다시 생성됩니다. 자동차 충전기에 플러그를 꽂으면 휴대 전화가 가로 모드로 전환되므로 휴대 전화가 세로 방향으로 회전하고 대부분 onDestroy으로 전화를 걸 수 있습니다. 일부 활동 플래그로이 동작을 방지 할 수있는 방법이 있지만 Google은 이에 대해 조언합니다.

무슨 일이 일어나는지 알아 내려면이 활동에 대한 더 많은 코드가 필요합니다.

또한 DeeV가 지적했듯이 onDestroy가 호출 될 때까지는 활동이 오래 걸렸으므로 수행중인 작업을 수행하기에 적합한 장소가 아닐 수도 있습니다. 그러나 더 많은 코드가 필요합니다. 확실히하다.

사이드 노트로 슬라이드 아웃 키보드가있는 휴대 전화에서 키보드를 밀어 올리면 동일한 효과가 발생합니다.

+0

예, 과거에이 동작을 보았습니다. 스플래시가 표시된 레이아웃이 아니라 내 자체의 새로운 활동이되도록 내 주 활동을 변경했습니다. 나는 여전히 내 응용 프로그램이 onDestroy()/onCreated 인 후에 finishActivity (AppState.ACTIVITY_SPLASH)에 대한 호출이 아무 효과가 없다는 점에서 문제를보고 있습니다. – TomBomb

관련 문제