← Назад к вопросам

Как создать новый 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 разработчика.

Как создать новый Context? | PrepBro