Контекст: понимание и использование
Context - это объект в Android, который предоставляет доступ к системным ресурсам и информации о состоянии приложения. Он используется для получения доступа к ресурсам, таким как строковые ресурсы, изображения, файлы и базы данных. Context используется также для получения доступа к системным службам, таким как уведомления, вибрация, локация и другие.
Context доступен в каждой Activity и у него есть два основных типа: Application Context и Activity Context.
Application Context - это контекст, связанный с приложением в целом. Он доступен в любой Activity или Service, даже если эта Activity или Service не создана.
Activity Context - это контекст, связанный с конкретной Activity. Он доступен только в цикле жизни этой Activity.
К примеру, если нужно получить доступ к ресурсам приложения, то можно использовать Application Context:
// получение Application Context
Context appContext = getApplicationContext();
// получение строки из ресурсов
String appName = appContext.getString(R.string.app_name);
// получение изображения из ресурсов
Drawable image = appContext.getDrawable(R.drawable.image);
Если нужно получить доступ к системным сервисам, то нужно использовать Activity Context:
// получение Activity Context
Context activityContext = MainActivity.this;
// получение системного сервиса локации
LocationManager locationManager = (LocationManager) activityContext.getSystemService(Context.LOCATION_SERVICE);
// запрос на получение локации
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
Также можно использовать Context для создания новых Activity или Service:
// создание новой Activity с помощью Context
Intent intent = new Intent(activityContext, SecondActivity.class);
activityContext.startActivity(intent);
// создание нового Service с помощью Context
Intent serviceIntent = new Intent(activityContext, MyService.class);
activityContext.startService(serviceIntent);
Context - это очень важный объект в Android, необходимый для получения доступа к ресурсам приложения и системным сервисам. При использовании Context необходимо понимать, какой тип Context использовать и какое его поведение, чтобы избежать утечек памяти и других проблем.