Подтвердить что ты не робот

Android: Диалог: я должен скрывать или смущать

Я играю с Dialog, чтобы создать несколько быстрых представлений в своем приложении (например, имя входа в систему и т.д.)

и я блуждаю, что лучше: скрыть или уволить.

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

мои диалоги маленькие и явственно статичны в моем коде, поэтому я не вмещаю много экземпляров.

Так может кто-нибудь дать мне за и против использования hide over off.

Джейсон

4b9b3361

Ответ 1

Это зависит от того, сколько времени вам нужно, и если это дорого его создать. Если это не так дорого, чтобы создать его, я лично предпочел бы уволить его, чтобы иметь "более чистую среду". Но если вы не используете сотни диалогов, я не думаю, что это действительно имеет значение.

Ответ 2

Использование hide() может привести к ошибке Leaked Window.

Если вы решите использовать hide() и вы выходите из приложения с помощью finish(), это вызовет сообщение об ошибке (см. здесь) о просачивающемся окне.

Итак, либо dismiss() ваши диалоги правильно перед вызовом finish(), либо просто используйте dismiss() вместо hide().

Ответ 3

Я знаю, что это очень старый пост, но я не нашел ни одного из ответов выше достаточно хорошего, поэтому самым простым объяснением:

  • hide() просто изменит статус видимости диалогового окна, но объект останется там и может быть снова показан с использованием метода show().
  • dismiss() скрывает и также разрушает диалог. чтобы снова отобразить диалоговое окно, необходимо сначала его воссоздать.

тогда, если вам нужно показать и скрыть диалог во много раз лучше hide(). в конце dismiss() на onDestroy(), чтобы избежать ошибки утечки окна.

надеюсь, что это будет полезно для ссылок на функции.

Ответ 4

Я предполагаю, что "статический" означает, что контент не динамический, а не то, что у вас есть статические объекты в вашем коде. В этом случае, вероятно, лучше всего отклонить диалог и позволить виртуальной машине вспомнить любую выделенную для нее память. Ресурсы, необходимые для создания диалога, тривиальны, но удержание памяти, когда оно не очень часто используется, является хорошим способом голодать в системе памяти.

Считайте, что ваше приложение может быть одним из полдюжины приложений. Если бы все они скрывали свои "дешевые" объекты, а не увольняли их довольно скоро, что-то будет вынуждено закрыть VM для восстановления памяти.

В то же время мы говорим о диалоге, который не является точно большим объектом. Я бы предложил стандартное поведение, чтобы отклонить его, если вы не можете создать убедительный аргумент, почему его дешевле скрыть, чтобы сохранить ресурсы при повторном создании (например, если вы очень часто показываете это диалоговое окно).