Вход в спящий режим

#android #android-sdcard

#Android #android-sdcard

Вопрос:

Я периодически добавляю информацию logcat в файл на моей SD-карте, но, похоже, он ничего не записывает в файл, пока телефон находится в спящем режиме.

Я использую PARTIAL_WAKE_LOCK для поддержания работы процессора.

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

При желании можно добавить код, но это не кажется актуальным, поскольку уже доказано, что он работает при включенном телефоне.

Ответ №1:

Как вы получаете уведомления о том, когда записывать журнал? Если вы используете обработчик, он не работает, когда телефон находится в спящем режиме. Вместо этого используйте службу AlarmManager, она будет работать, даже если телефон находится в спящем режиме (и вам не придется беспокоиться о блокировках пробуждения и возможном разряде батареи, если не переводить телефон в спящий режим).

Комментарии:

1. у меня запланирована временная задача, которая будет выполняться каждые 30 секунд. У меня запланированы другие временные задачи, и все они выполняются вовремя. диспетчер аварийных сигналов кажется более сложным, и, насколько я понимаю, я должен запустить действие с alarmmanager, с пользовательским интерфейсом и всем остальным?

2. @user755610, прежде всего, ваш подход с timetasks не будет работать в спящем режиме. У вас должна быть блокировка пробуждения, иначе ваши временные задачи не будут выполняться в спящем режиме. Во-вторых, AlarmManager вообще не привязан к пользовательскому интерфейсу, вы можете отправить широковещательное сообщение или запустить службу с помощью AlaramManager .

3. «Я использую частичную блокировку пробуждения, чтобы поддерживать работу процессора».

4. Я понял это, я использовал конструктор по умолчанию при создании нового FileWriter(File file), пришлось добавить bool для добавления FileWriter(File file, Bool append)

5. Хорошо, что вы поняли ответ, но я думаю, вам следует пересмотреть использование частичной блокировки пробуждения. Поддерживая процессор в рабочем состоянии, вы увеличиваете использование батареи. Вероятно, это не очень хорошая идея, если вы хотите, чтобы приложение работало непрерывно. AlarmManager на самом деле не так уж и сложен.