все, что я получаю от новых компонентов архитектуры Android, это то, что если мы будем информировать о жизненном цикле компонента, то в зависимости от жизненного цикла действия LifecycleObserver будет реагировать на события. Это сокращает объем стандартного кода, который мы пишем в действиях onCreate, onStop или onStart и т. Д. Или в методах жизненного цикла фрагментов.
Теперь, как сделать службу Android осведомленной о жизненном цикле?
До сих пор я вижу, что мы можем создать сервис, который расширяет android.arch.lifecycle.LifecycleService. Однако я не вижу ни одного события, связанного с привязыванием и отменой привязки, пока я наблюдаю.
Фрагменты кода
// MY BOUNDED service
public class MyService extends LifecycleService
implements LocationManager.LocationListener{
private LocationManager mLocationManager;
@Override
public void onCreate() {
super.onCreate();
mLocationManager = LocationManager.getInstance(this, this);
mLocationManager.addLocationListener(this);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public IBinder onBind(Intent intent) {
super.onBind(intent);
}
@Override
public boolean onUnbind(Intent intent) {
}
...
}
public class LocationManager implements LifecycleObserver{
public interface LocationListener {
void onLocationChanged(Location location);
}
private LocationManager(LifecycleOwner lifecycleOwner, Context context){
this.lifecycleOwner =lifecycleOwner;
this.lifecycleOwner.getLifecycle().addObserver(this);
this.context = context;
}
public static LocationAccessProcess getInstance(LifecycleOwner lifecycleOwner, Context context) {
// just accessiong the object using static method not single ton actually, so don't mind for now
return new LocationAccessProcess(lifecycleOwner, context);
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void startLocationUpdates() {
// start getting location updates and update listener
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void stopLocationUpdates() {
// stop location updates
}
}
У меня есть несколько вопросов здесь
- Как я могу наблюдать за событиями ON_BIND и ON_UNBIND. как я хотел бы также уменьшить свой сервисный код.
- Я что-то не так делаю, Можем ли мы выпустить использование арки жизненного цикла для сервисов
Пожалуйста, помогите мне.
Спасибо