Android: глобальные приложения onPause () и onResume ()? - PullRequest
13 голосов
/ 14 января 2010

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

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

Есть идеи?

Ответы [ 2 ]

12 голосов
/ 14 января 2010

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

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

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

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

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

Шаг № 2: Попросите участников позвонить в службу в течение onPause() и onResume().

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

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

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

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

4 голосов
/ 25 июня 2015

Вы можете создать класс приложения и, если он реализует 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();
}
...