Я сделал что-то очень похожее на это в приложении, которое использовало сервис, который предоставлял функции GPS несколькими действиями. Идея заключалась в том, чтобы иметь только службу там, когда один из видов деятельности, которые ее использовали, виден, а не там, когда нет видимых. В вашем случае каждое действие будет подключаться к службе, и вы узнаете, когда все приложение было приостановлено или возобновлено, подключившись к методам onCreate() и onDestroy() службы.
Вот урезанный пример:
компоненты необходимы (это, вероятно, может быть помещен в служебный класс, если вы хотите использовать их, или у меня просто их для каждого класса деятельности):
private boolean mAppActiveServiceBound = false;
private AppActiveService mAppActiveService = null;
private ServiceConnection mAppActiveConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mAppActiveService = ((AppActiveService.AppActiveBinder) service).getService();
}
public void onServiceDisconnected(ComponentName className) {
mAppActiveService = null;
}
};
Затем в OnStart() и OnStop() методы для каждого вида деятельности:
@Override
public void onStart() {
super.onStart();
mAppActiveServiceBound = bindService(new Intent(this, AppActiveService.class), mAppActiveConnection, Context.BIND_AUTO_CREATE);
}
@Override
public void onStop() {
super.onStop();
if(mAppActiveServiceBound) {
unbindService(mAppActiveConnection);
mAppActiveServiceBound = false;
}
}
и, наконец, сама служба:
public class AppActiveService extends Service {
// Receives interactions from clients:
private final IBinder mBinder = new AppActiveBinder();
/**
* Provides a handle to the bound service.
*/
public class AppActiveBinder extends Binder {
AppActiveService getService() {
return AppActiveService.this;
}
}
@Override
public void onCreate(){
// TODO: Here is presumably "application level" resume
}
@Override
public void onDestroy(){
// TODO: Here is presumably "application level" pause
}
}
Что не так с 'onPause' и таким? – hichris123
он не существует на уровне приложения, но только для действий – TMacGyver
Но разве вы не могли просто использовать 'onPause' во всех своих действиях и иметь один и тот же код? – hichris123