Android - Потеря области видимости элементов интерфейса после onDestroy () - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь решить проблемы, возникающие в моем приложении, когда телефон подключен к определенным типам зарядных устройств и переведен в «автомобильный режим» или «режим вождения».

В работающем приложении вызывается onDestroy (), за которым сразу же следует onCreate (), и приложение снова запускается в обычном режиме. Однако последующие вызовы для обновления элементов пользовательского интерфейса (во вновь созданном основном Activity) теперь не имеют никакого эффекта, и, похоже, я потерял область видимости в моем макете.

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

Что может произойти на Дестрой (), который я не учел? Я не делаю много очистки на Дестрой, потому что я не думал, что мне нужно.

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

Когда телефон вращается, действие уничтожается и воссоздается.Подсоединение к автомобильному зарядному устройству обычно переводит телефон в ландшафтный режим, поворачивая его (скорее всего, из портретного режима) и вызывая onDestroy.Есть способ предотвратить такое поведение с помощью некоторых флагов активности, но Google рекомендует против этого.

Нам нужно увидеть еще немного кода для этого действия, чтобы выяснить, что происходит.

ТакжеКак указывает DeeV, к моменту вызова onDestroy активность уже давно прекратилась, поэтому, возможно, это не то место, где нужно делать то, что вы делаете, но нам нужно больше кода, чтобы быть уверенным.

Как примечание, сдвиг клавиатуры (на телефонах с выдвижными клавиатурами) даст тот же эффект.

0 голосов
/ 22 февраля 2012

Activity был отсоединен от пользовательского интерфейса к тому времени, когда вызывается onDestroy(), поэтому иметь вызовы пользовательского интерфейса не имеет никакого смысла.Если вам нужно, чтобы всплеск отображался, установите его на View.VISIBLE в onCreate(), onResume() или , возможно onPause().Я не совсем уверен, если onPause() будет действовать иначе.

...