Перейти к содержанию
Fire Monkey от А до Я
  • 0

События при переходе в спящий режим и выходе из него


No Pe

Вопрос

Добрый дня. 

Пишу маленькую программку в образовательных целях )). И столкнулся с вопросом экономии батареи, поэтому хотел бы приостановить прием передачу данных с программы в спящем режиме.

Тут и возник вопрос, а как отследить вход в спящий режим и выход из него, чтобы остановить и запустить таймеры?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
1 час назад, krapotkin сказал:

в теории, вообще ничего делать не надо

программа заснет и таймеры вместе с ней

Таймеры не засыпают.  Есть 3 таймера, один из них опрашивает сервер на появление новых записей в бд и генерирует пушап сообщения.

И даже в спящем режиме планшет  пиликает, таймер работает. И два других тоже (один получает статус последней записи в бд другой технический).

Вот их бы и вырубить, они генерят бесполезный трафик и едят батарейку.

 

1 час назад, Rusland сказал:

No Pe, cмотрите статью Ефимова Андрея http://delphifmandroid.blogspot.com/2013/10/blog-post.html

Спасибо, пойду погрызу немного гранита науки.

Ссылка на комментарий
  • 0

если бы все так и было, то не было бы большого обсуждения сервисов совсем недавно тут на форуме

там даже есть статистика, через какое время все замирает

Ссылка на комментарий
  • 0

Надо копать PowerManager.  Androidapi.JNI.PowerManager.pas

https://developer.android.com/reference/android/os/PowerManager.html

AcquireWakeLock и ReleaseWakeLock - оттуда использовал, управление режимом засыпания.

что-то типа isPowerSaveMode(),

но это по запросу, так чтобы событие, это надо ловить ACTION_POWER_SAVE_MODE_CHANGED

Изменено пользователем Камышев Александр
Ссылка на комментарий
  • 0
6 минут назад, Камышев Александр сказал:

AcquireWakeLock и ReleaseWakeLock - оттуда использовал, управление режимом засыпания.

что-то типа isPowerSaveMode(),

но это по запросу, так чтобы событие, это надо ловить ACTION_POWER_SAVE_MODE_CHANGED

Пример можете предоставить?

Ссылка на комментарий
  • 0
8 минут назад, Rusland сказал:

Пример можете предоставить?

isPowerSaveMode() итак понятно, а с событием нет, кода нет.

Intent that is broadcast when the state of PowerManager.IsPowerSaveMode changes. This broadcast is only sent to registered receivers.

Изменено пользователем Камышев Александр
Ссылка на комментарий
  • 0

в AndroidManifest.xml:

<receiver android:name=".observers.PowerSaveModeReceiver">
    <intent-filter>
        <action android:name="android.os.action.POWER_SAVE_MODE_CHANGED"/> 
    </intent-filter>
</receiver>

 

и есть код на java:

PowerSaveModeReceiver.java:

 

public class PowerSaveModeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        if (BuildConfig.DEV_LOGS)
            Log.d(this.getClass().getName(), String.format("onReceive(context = [%s], intent = [%s])", context, intent));

        final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        if (pm.isPowerSaveMode()) {
            // do something
        } else {
            // do some else
        }
    }
}
Ссылка на комментарий
  • 0
47 минут назад, Rusland сказал:

Пример можете предоставить?

Rusland, вот обсуждение 

и код оттуда 

 

BroadcastReceiver:= TCSBroadcastReceiver.Create(nil);
      BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive;
      BroadcastReceiver.RegisterReceive;
      BroadcastReceiver.Add('android.intent.action.PHONE_STATE');
      BroadcastReceiver.Add('android.intent.action.NEW_OUTGOING_CALL');

а если попробовать: 

BroadcastReceiver.Add('android.os.action.POWER_SAVE_MODE_CHANGED');

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...