какая разница, если мы начнем деятельность, используя контекст приложения вместо контекста активности? - PullRequest
0 голосов
/ 14 января 2019
Intent intent = new Intent(activityContext,SomeActivity.class);
startActivity(intent);

вместо ActivityContext можем ли мы использовать applicationContext, если да, в чем будет разница во вновь создаваемой активности.

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

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Теперь то, что смущает, - это объявление разных контекстов и их специфическое использование. Чтобы упростить задачу, вы должны сосчитать два типа контекста, доступных в платформе Android.

Контекст приложения. Контекст приложения. Контекст приложения привязан к жизненному циклу приложения и всегда будет одинаковым на протяжении всего жизненного цикла приложения. Поэтому, если вы используете Toast, вы можете использовать контекст приложения или даже контекст активности (оба), потому что toast может быть вызван из любой точки вашего приложения и не привязан к окну.

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

Теперь ссылаясь на ваши дела:

activitycontext: хотя он ссылается на ваш собственный класс, который расширяет класс Activity, но базовый класс (Activity) также расширяет класс Context, поэтому его можно использовать для предоставления контекста активности.

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

getApplicationContext () предлагает контекст приложения.

getBaseContext () предлагает контекст активности.

Используйте контекст действия при использовании Intent, а для тоста вы можете использовать любой контекст.

0 голосов
/ 19 января 2019

Контекст приложения и контекст действия являются экземпляром класса Context . Контекст приложения относится к жизненному циклу приложения, а Контекст действия относится к жизненному циклу действия. Таким образом, для получения текущей информации об активности вам может потребоваться использовать контекст деятельности вместо контекста приложения.

0 голосов
/ 14 января 2019

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

...