В моем коде я начинаю новую деятельность для просмотра улиц.Главное приложение убито после запуска деятельности по просмотру улиц
Intent streetView = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
startActivity(streetView);
It Запускает вид на улицу просто отлично. Если я не много делаю, я могу нажать кнопку «Назад», и мое приложение сидит там, ожидая, что ничего не изменилось.
Однако, если я использую вид на улицу для немного и посмотреть вокруг и переместить взгляд вокруг, я вижу это в LogCat:
01-27 10: 53: 27,526: INFO/ActivityManager (1079): Низкая память: больше фоновых процессов.
01-27 10: 53: 27,636: ОТЛАДКА/dalvikvm (32218): GC_FOR_MALLOC освободил 3054 объектов/198608 байт в 655ms
01-27 10: 53: 27.831: ОТЛАДКА/dalvikvm (32164): GC_FOR_MALLOC освободил 1054 объектов/51664 байт 342ms
01-27 10: 53: 27.862: INFO/dalvikvm-куча (32164): Grow кучи (осколочный случае) 3.656MB для распределения 87396 байт
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) скончался.
01-27 10: 53: 27,490: INFO/WindowManager (1079): WIN СМЕРТЬ: Окно {44c68ba8 com.myapp.app/com.myapp.app.MyLocation паузу = ложь}
Затем, когда я нажмите кнопку «Назад», чтобы вернуться в мое приложение, похоже, что вся переменная была сброшена до нуля, например, я потерял состояние своего приложения. Единственный способ исправить это - снова нажать кнопку «Назад» и перезапустить эту активность.
Из того, что я могу сказать, его не вызывая методы onpause() или onSaveInstanceState(), и ОС убивает мое приложение для памяти, чтобы запустить streetview.
Есть ли что-то, что мне нужно сделать по-другому?
Вот мой OnCreate, onRestoreInstanceState и onSaveInstanceState методы:
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);
}
Я думаю, что, возможно, есть зацепка о том, почему это происходит. Все еще не уверен, как это исправить. Я установил несколько отладочных сообщений, и я вижу, как запускаются методы onRestoreInstanceState()
и onSaveInstanceState()
.
Проблема в том, что это не восстановление моего сохраненного экземпляра до после мой onCreate()
метод заканчивается. Но именно во время метода onCreate()
мне нужны эти переменные, которые до сих пор остаются нулевыми. Как я могу заставить мой код запускать после onCreate()
, но не требуя ввода какого-либо пользователя? или Как я могу получить onRestoreInstanceState()
для запуска до моего кода?
Откуда вы знаете, что 'onpause()' и 'onSaveInstanceState()' не вызываются? Вы пытаетесь сохранить свое состояние в одном (или обоих) этих методах? Вы регистрируете их? –
Из logcat он сообщает мне pause = false. Таким образом, это не похоже на работу onpause(). Также я помещаю переменные, которые я пытаюсь сохранить в моем методе onSaveInstanceState(). – Brian