#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 на самом деле не так уж и сложен.