2012-01-19 3 views
2

намерениях Какая разница между началом ActivityB от ActivityA использованиемИспользование контекста в Явные

1. startActivity(this, ActivityB.class); 

против

2. startActivity(getApplicationContext(), ActivityB.class); 

Я обычно см.п.1 используется чаще в примерах, но у меня нет натолкнулись на причину, почему это так.

ответ

3

Ссылка на деятельность как контекст (this) может стать устаревшей, если ваша деятельность проходит через изменения конфигурации, такие как вращение, и уничтожается и создается снова. Контекст, полученный getApplicationContext(), однако, сохраняется в течение всего жизненного цикла процесса.

Однако мне кажется, что это проблема только при привязке Activity to Service или в другом подобном сценарии, поэтому можно использовать this, когда вы используете его, чтобы начать другое действие.

+0

Итак, если я правильно понимаю ваш ответ, когда вы предоставляете контекст для запуска Activity B из Activity A, нет никакого преимущества или недостатка в использовании (this) over (getApplicationContext())? – Matthew

+0

насколько я знаю - нет никакой разницы. – Vladimir

+0

Контекст приложения не изменяется до тех пор, пока ваше приложение не будет завершено. – rekire

0

Я предполагаю, что вы на самом деле просят о разнице между

startActivity(new Intent(this, ActivityB.class)); 

и

startActivity(new Intent(getApplicationContext(), ActivityB.class)); 

Там нет никакой разницы. Android требует имя ComponentName (имя и класс пакета). Контекст используется для определения имени пакета.

1

Нет никакой разницы. Согласно исходному коду Intent и ComponentName - единственное, что используется в контексте формы - получает имя пакета от context.getPackageName(). Название пакета одинаково для Activity.this и Activity.getApplicationContext(), поэтому нет никакой разницы.

Смежные вопросы