스트리트 뷰를위한 새로운 활동을 시작합니다.메인 앱은 스트리트 뷰 활동을 시작한 후 살해됩니다.
Intent streetView = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(streetView);
It 스트리트 뷰를 정상적으로 시작합니다. 내가 많이하지 않으면 뒤로 버튼을 누를 수 있고 앱이 아무 것도 바뀌지 않았을 때 대기하고 있습니다. 나는 조금의 스트리트 뷰 (Street View)를 사용하고 주위를 둘러 보면 주위 뷰를 이동하는 경우
그러나, 나는 로그 캣에서 볼 :
10월 1일부터 27일까지 : 53 : 27.526 : INFO/ActivityManager (1079) 메모리 부족 : 더 이상 백그라운드 프로세스가 없습니다.
10월 1일부터 27일까지 : 53 : 27.636 : DEBUG/dalvikvm가 (32218) : 53 : 27.831 : GC_FOR_MALLOC가 655ms
10월 1일에서 27일까지에서 3,054 개체/198,608 바이트 해제 DEBUG/dalvikvm (32,164) GC_FOR_MALLOC 53 : 27.862 : 1,054 개체/342ms
10월 1일에서 27일까지에서 51,664 바이트 해제 INFO/dalvikvm 힙 (32,164) 87,396 바이트 할당 3.656MB에 힙 (파편 경우) 성장
01- 27 10 : 53 : 27.878 : INFO/ActivityManager (1079) : 프로세스 com.favorite.me (pid 32135)가 사망했습니다.
01-27 10 : 53 : 27.878 : INFO/ActivityManager (1079) : 메모리 부족 : 더 이상 백그라운드 프로세스가 없습니다.
01-27 10 : 53 : 27.482 : INFO/ActivityManager (1079) : com.myapp.app (pid 31481) 프로세스가 종료되었습니다.
10월 1일부터 27일까지 : 53 : 27.490 : INFO/창 관리자 (1079)을 WIN DEATH : 창
이어서 {44c68ba8 com.myapp.app/com.myapp.app.MyLocation는 = 거짓 일시} 때 뒤로 버튼을 눌러 내 앱으로 돌아 가면 내 앱의 상태를 잃어버린 것처럼 모든 변수가 null로 재설정 된 것처럼 보입니다. 이 문제를 해결할 수있는 유일한 방법은 뒤로 버튼을 다시 누르고 해당 활동을 다시 시작하는 것입니다.
내가 말할 수있는 것부터, onpause() 또는 onSaveInstanceState() 메소드를 호출하지 않고 OS가 streetview를 실행하기 위해 메모리에 대한 App을 강제 종료합니다.
내가 다르게해야 할 일이 있습니까? 내가 왜 이런 일에 대한 단서가있을 수 있습니다 생각
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
sLong = savedInstanceState.getDouble("sLong");
sLat = savedInstanceState.getDouble("sLat");
sMapStyle = savedInstanceState.getBoolean("sMapStyle");
sMapUpdate = savedInstanceState.getBoolean("sMapUpdate");
sMapStreet = savedInstanceState.getBoolean("sMapStreet");
sFirstTime = savedInstanceState.getBoolean("sFirstTime");
locationAvailable = savedInstanceState.getBoolean("locationAvailable");
sGPSFlag = savedInstanceState.getBoolean("sGPSFlag");
sMessage = savedInstanceState.getString("sMessage");
sMap = savedInstanceState.getString("sMap");
sGPS = savedInstanceState.getString("sGPS");
sAddressIn = savedInstanceState.getString("sAddressIn");
sGPSLat = savedInstanceState.getString("sGPSLat");
sGPSLong = savedInstanceState.getString("sGPSLong");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putDouble("sLong",sLong);
savedInstanceState.putDouble("sLat",sLat);
savedInstanceState.putBoolean("sMapStyle",sMapStyle);
savedInstanceState.putBoolean("sMapUpdate",sMapUpdate);
savedInstanceState.putBoolean("sMapStreet",sMapStreet);
savedInstanceState.putBoolean("sFirstTime",sFirstTime);
savedInstanceState.putBoolean("locationAvailable",locationAvailable);
savedInstanceState.putBoolean("sGPSFlag",sGPSFlag);
savedInstanceState.putString("sMessage",sMessage);
savedInstanceState.putString("sMap",sMap);
savedInstanceState.putString("sGPS",sGPS);
savedInstanceState.putString("sAddressIn",sAddressIn);
savedInstanceState.putString("sGPSLat",sGPSLat);
savedInstanceState.putString("sGPSLong",sGPSLong);
}
: 여기
내에서 OnCreate, onRestoreInstanceState 및 onSaveInstanceState 방법이다. 아직도 그것을 정정하는 방법 아직도 확실하지 않습니다. 일부 디버깅 메시지를 설정하고onRestoreInstanceState()
및
onSaveInstanceState()
메서드가 실행되는 것을보고 있습니다.
문제는 까지 내 저장된 인스턴스를 복원하지 않고onCreate()
메서드 완료 후입니다. 그러나이 시점에서 여전히 null 인 변수를 필요로한다는 것은 onCreate()
메서드 중에 있습니다. onCreate()
이후에 사용자 코드를 입력하지 않고도 코드를 실행하려면 어떻게해야합니까? 또는 코드 앞에 onRestoreInstanceState()
을 어떻게 실행시킬 수 있습니까?
'onpause()'와'onSaveInstanceState()'가 호출되지 않는다는 것을 어떻게 알 수 있습니까? 이 방법 중 하나 (또는 둘 다)에 상태를 저장하려고 시도하고 있습니까? 그들에게 전화를 걸고 있습니까? –
logcat에서 pause = false를 표시합니다. 따라서 실행중인 onpause()처럼 보이지 않습니다. 또한 내 onSaveInstanceState() 메서드에서 저장하려고 시도하는 변수를 넣습니다. – Brian