Android-приложение теряет состояние после запуска другого намерения - PullRequest
1 голос
/ 17 мая 2011

Итак, у меня есть следующее:

Общий класс, к которому многие из моих Деятельностей обращаются в моем приложении для Android, путем установки класса в моем манифесте:

<application android:name="com.dev.games.phraseparty.Common"... />

Теперь в этом классе у меня есть несколько объектов, созданных для сохранения состояния приложения, и общих служб для выполнения приложений, созданных в конструкторе Common.

е

GameStateVO gameState;

public Common()
{
    gameState = new GameStateVO();
}

Моя проблема в том, что в моей активности есть реклама Admob. Когда пользователь нажимает на объявление, он вызывает намерение веб-браузера открыть URL-адрес объявления в веб-браузере.

Теперь, когда я возвращаюсь назад из веб-браузера, запущенного admob, он возвращает меня к операции вызова и вызывается метод OnCreate.

Это действие затем получает исключение нулевого указателя, потому что оно будет выполнять что-то вроде:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Common common = this.getApplication();

//null pointer here since the game state VO is null since the Common has lost its state.
int score = common.getGameState().getScore();

}

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Возможно, вы захотите изучить реализацию метода onSaveInstanceState: он позволяет хранить любую соответствующую информацию до ее уничтожения. См. http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29 для фактического вызова, который вам нужно реализовать, и Сохранение состояния активности Android с помощью Save Instance State для довольно хорошего примера.

1 голос
/ 17 мая 2011

Если у вас нет активных действий переднего плана, то ваш процесс готов к закрытию ОС, чтобы получить больше ресурсов. В частности, приложение для браузера, которое я заметил, использует много ресурсов и может быстро привести к фоновым действиям и последующим процессам, которые будут убиты. Наличие службы может помочь сохранить ваш процесс, но даже в этом случае он может быть отключен при необходимости. Я думаю, что вам нужно использовать метод жизненного цикла активности, чтобы сохранить и восстановить ваше состояние. Для получения дополнительной информации см. Раздел жизненный цикл процесса документации

...