Intereting Posts
Полностью изменить название пакета, включая домен компании Ошибка Google Play «Ошибка при получении информации с сервера " ProgressDialog не отображается во время выполнения задачи Cmd не может распознать dex2jar-Android Apk Как запустить активность только один раз, когда приложение открывается в первый раз? Как я могу изменить стиль кнопки динамически в Android? 'Android.support.test.espresso не существует', когда я хочу использовать его для отдельного теста apk Android Camera Server Died и Camera Error – 100 Нажатие кнопки меню вызывает сбои в действии без ActionBar Как просмотреть данные, сохраненные в базе данных Android (SQLite)? Использование курсора с адаптером ListView для большого количества данных В Android Studio 2.0 не удается найти локальную переменную метода в режиме отладки Завершение покупки в приложении Android после оплаты Chrome: // проверять отображение устройства, не отображая открытые вкладки Android Power Profiler

Всегда ли безопасно использовать контекст для активности в представлении?

Могу ли я знать, безопасно ли всегда включать Context в действие в режиме View ?

 View { Activity activity = (Activity)this.getContext(); } 

Пока все работает отлично. Мне было интересно, есть ли какие-либо крайние случаи, когда вышеуказанный код не сработает?

Solutions Collecting From Web of "Всегда ли безопасно использовать контекст для активности в представлении?"

Хотя я не могу придумать такой случай, я думаю, что это не такая прекрасная идея по двум причинам:

  1. Зачем вам это нужно, когда вам явно нужна активность?
  2. Что, если завтра это будет изменено, и будет ли другой контекст для View ?

Как я знаю, это не всегда безопасно, потому что контекст также может передаваться от os к службе, BroadcastReceiver и т. Д. Но почти в этом случае это не проблема. Просто проверьте этот код

 if(context instanceof Activity) 

И не стесняйтесь использовать.

Технически виды могут быть созданы с любым Контекстом (через LayoutInflater )

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

Я думаю, вы можете использовать следующий фрагмент:

 /** * Get activity instance from desired context. */ public static Activity getActivity(Context context) { if (context == null) return null; if (context instanceof Activity) return (Activity) context; if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext()); return null; }