Что именно означает использование контекста приложения?

Я новичок в этом, и мне жаль, если это действительно глупый вопрос. Я просто пытаюсь прояснить ситуацию. В моей книге говорится, что я могу получить контекст приложения для процесса, используя метод getApplicationContext(). Я просто действительно не знаю, где напечатать это или что с этим делать. Я могу зайти в иерархию, но что мне делать со всем там скриптом. Кроме того, где я мог бы написать обратные вызовы активности в main.xml? Упражнение требует, чтобы я добавил тег ведения журнала в свой проект, но я не знаю, как это сделать. Точный текст гласит:

«В методе обратного вызова onCreate() добавьте информационное сообщение журнала, используя метод Log.i()».

и другое упражнение говорит:

«Реализуйте некоторые методы обратного вызова Activity в дополнение к onCreate(), например, onStart(). Добавьте сообщение журнала в каждый метод обратного вызова, а затем запустите приложение в обычном режиме».

Поскольку это кажутся основными вопросами, может кто-нибудь помочь мне.

Я использую Android SDK и Eclipse. Я сделал приложение Hello World, но понятия не имею, что делать с ресурсами Context или Retrieving. Пожалуйста помоги!


person Chris P    schedule 08.03.2011    source источник
comment
ApplicationContext javadocs   -  person Matt Ball    schedule 08.03.2011
comment
Господи, вы только что указали на документацию для версии платформы PRE-1.0 для класса, который даже не был частью SDK.   -  person hackbod    schedule 08.03.2011
comment
Я узнаю эти упражнения. Ваша книга случайно не называется "Научи себя... за 24 часа" Сэма? Он у меня есть, и когда я его закончил, я почувствовал, что там были очень важные, фундаментальные темы, которые на самом деле не были освещены. Возможно, вы захотите взглянуть при некоторых альтернативах.   -  person erichamion    schedule 08.03.2011
comment
@erichhamion - Вы правы, сэр. Сэм... Java за 24 часа ужасен. Некоторые альтернативы — почти ЛЮБАЯ альтернатива была бы лучше, но ссылка на альтернативы не работает. В коллективной защите авторов Java огромен, и им приходится выбирать, что включать. Но Сэм слишком сильно сузил круг. Тем не менее, 24 часа рабочего времени... хммм... 3,5 часа в день в течение недели; 8 часов в день 3 дня. И примеры оставляют так много для УЧАЩЕГОСЯ пользователя, что они часто не компилируются из-за упущений.   -  person DSlomer64    schedule 18.08.2018


Ответы (2)


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

Обратные вызовы, о которых вы говорите, относятся к классу Activity. Основы приложения описывает, что такое действие: http://developer.android.com/guide/topics/fundamentals.html#Components

Единственный раз, когда вы хотите использовать getApplicationContext(), — это когда вам нужен контекст, который существует вне жизненного цикла класса Activity (или другого компонента). Вы захотите найти документацию по конкретным случаям, когда это желательно, существует много плавающих вокруг. Например, это часть документации Android: http://android-developers.blogspot.de/2009/01/avoiding-memory-leaks.html

person hackbod    schedule 08.03.2011
comment
Другая часть вопроса касалась тега ведения журнала. Тег — это просто строка, которую вы можете определить, возможно, как static final String в вашем классе Activity. Тогда вы бы позвонили, например, Log.i(LOG_TAG, "onStart() was called. Hooray!") - person erichamion; 08.03.2011
comment
Итак, ваш ответ - использовать контекст активности. Но вы ссылаетесь на статью, в которой рекомендуется вместо этого использовать контекст приложения, чтобы избежать утечек памяти? Я сейчас немного запутался. В чем преимущество использования контекста активности? - person JacksOnF1re; 18.03.2015

Для задач, с которыми вы здесь работаете, вы будете использовать код Java, определяющий поведение приложения, а не файлы XML, определяющие ресурсы и макеты, или файл AndroidManifest.xml, объявляющий основные свойства приложения.

Если вы работаете с Часом 3 книги Sam's Teach Yourself..., вам нужно открыть файл src\com.androidbook.droid1\DroidActivity.java. В общем, вам понадобится src\<package-name>\<class-name>.java. Когда вы откроете этот файл, вы увидите класс (в данном случае DroidActivity), который расширяет Activity и уже имеет метод обратного вызова onCreate(). Все, что вы хотите, чтобы произошло во время onCreate(), входит в этот метод. Другие методы обратного вызова могут быть добавлены внутри класса активности. Чтобы увидеть пример, который имеет все обратные вызовы жизненного цикла (но ничего в них не делает), посмотрите здесь.

Тег ведения журнала — это просто строка. Вы можете объявить его, например, как private static final String внутри класса активности.

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

person erichamion    schedule 08.03.2011