Android: приложение global onPause() и onResume()?

Есть ли что-то вроде приложения global onPause() и onResume()?

Моя основная деятельность прослушивает исправления GPS, которые я хочу продолжить работать при переключении на другой экран/активность. Поэтому я не могу отменить мой LocationListener в действии onPause(). Однако я все же хочу отменить регистрацию своего GPS-приемника при переключении на другое приложение (так что сэкономьте батарею) и снова включить его при возврате в мое приложение, независимо от того, какой экран/активность пользователь в данный момент находится.

Любые идеи?

Ответ 1

Есть ли что-то вроде приложения global onPause() и onResume()?

Нет, извините.

Моя основная деятельность прослушивается для GPS исправления, которые я хочу продолжить работает при переключении на другой экран/активность. Поэтому я не могу отмените регистрацию моего LocationListener в активность onPause(). Однако я все еще хочу отменить регистрацию моего слушателя GPS при переключении на другое приложение (так что сэкономьте батарею) и поверните его назад при возврате в мое приложение, независимо от того, какой экран/активность пользователь в данный момент находится.

Вот один из возможных подходов:

Шаг # 1: Переместите логику LocationListener в Service, к которой действия подключаются через локальный шаблон привязки или что-то еще. Также, по крайней мере, один служебный вызов startService(), поэтому unbindService() не приведет к исчезновению Service (при условии, что вы используете шаблон локальной привязки).

Шаг № 2: вызовите действия в службу во время onPause() и onResume().

Шаг № 3: Служба поддерживает количество ссылок на выдающиеся действия.

Шаг №4: Когда счетчик ссылок достигнет нуля, попросите услугу организовать пробуждение через таймер и TimerTask. Кроме того, отмените любой такой выдающийся TimerTask, если счетчик ссылок будет увеличен.

Шаг № 5: Если вы когда-либо выполняете выполнение команды TimerTask выключите GPS.

Сеть заключается в том, что вы выпустите только GPS после такого-то количества бездействия. Эта бездеятельность может быть по какой-либо причине.

Ответ 2

Вы можете создать класс приложения и, если он реализует Application.ActivityLifecycleCallbacks

public class AppController extends Application implements Application.ActivityLifecycleCallbacks
{

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        Toast.makeText(this, "----------onCreate()---------", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onActivityStarted(Activity activity) {
        Log.i("ApplicationName","----------onActivityStarted()---------");
    }

    @Override
    public void onActivityResumed(Activity activity) {
        Log.i("ApplicationName","----------onActivityResumed()---------");
    }

    @Override
    public void onActivityPaused(Activity activity) {
        Toast.makeText(this, "----------onActivityPaused()---------", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onActivityStopped(Activity activity) {
        Log.i("ApplicationName","----------onActivityStopped()---------");
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        Log.i("ApplicationName","----------onActivitySaveInstanceState()---------");
    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }
}

Затем вызов из вашей активности

@Override
protected void onPause() {
    AppController controller=(AppController)getApplicationContext();
    controller.onActivityPaused(Main3Activity.this);
    super.onPause();
}