← Назад к вопросам
Как создать новый Context?
1.0 Junior🔥 161 комментариев
#Spring Boot и Spring Data#Spring Framework
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Создание Context в Java
Context — это один из самых важных паттернов в Java и Android разработке. Он представляет собой объект, который хранит информацию о окружении приложения и используется для доступа к ресурсам, сервисам и конфигурации системы.
Что такое Context?
Context — это интерфейс, который предоставляет доступ к:
- Ресурсам приложения (строки, изображения, стили)
- Системным сервисам (менеджер активностей, системные уведомления)
- Информации о приложении (пакет, директория)
- Базам данных и предпочтениям
Способы создания Context
1. Context в Android (Activity)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// В Activity Context доступен напрямую через this
Context context = this;
// Или используй getApplicationContext()
Context appContext = getApplicationContext();
}
}
2. Получение Context из Service
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
// В Service Context доступен как this
Context context = this;
}
}
3. Context в Fragment
public class MyFragment extends Fragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Использовать requireContext() (рекомендуется)
Context context = requireContext();
// Или getContext() (может вернуть null)
Context context2 = getContext();
}
}
4. Context в Dialog
public class MyDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Context context = requireContext();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Диалог");
return builder.create();
}
}
Типы Context
Application Context — существует столько же, сколько живёт приложение:
Context appContext = getApplicationContext();
Activity Context — существует столько же, сколько живёт Activity:
Context activityContext = this; // В Activity
Важные правила
- Никогда не сохраняй Activity Context как поле в долгоживущих объектах (может привести к memory leak)
- Для долгосрочного хранения используй Application Context
- В Fragment всегда используй
requireContext()вместоgetContext()для safety - Не передавай Context в конструктор — передай через метод
Получение системных сервисов через Context
Context context = getApplicationContext();
// Получить системные сервисы
LayoutInflater inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
NotificationManager notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE);
AlarmManager alarmManager = context.getSystemService(Context.ALARM_SERVICE);
Context — это фундамент разработки под Android и отличное понимание его работы критично для Java разработчика.