2013-04-23 2 views
0

Я хотел бы выполнить wakelock через определенные промежутки времени в моем приложении. Было бы неплохо, если бы Android мог просто сохранить все состояние моего приложения на диск до освобождения wakelock, а затем перезагрузиться, когда будильник AlarmManager или какой-либо другой процесс хочет запустить мое приложение. В настоящее время я храню много переменных на диске и перезагружаю их, когда приложение снова перезапускается. Microsoft Windows делает это, если вы переходите в режим ожидания. Просто интересно, поддерживает ли Android аналогичную вещь.Есть ли у Android средства хранения состояния приложения на диске

+1

http://stackoverflow.com/questions/151777/saving-activity-state-in-android Надеюсь, это может вам помочь! –

+0

Это работает только для действий, а не для сервисов, которые есть у моего приложения. Кроме того, для этого требуется хранить все переменные, которые вы хотите восстановить, что я и делаю, за исключением того, что я храню их в базе данных. Я ищу больше для того, чтобы Android просто полностью загрузил все состояние приложения на диск. – AndroidDev

ответ

2

Я не думаю, что есть хороший способ сохранить состояние всего приложения. Нет необходимости хранить каждую отдельную переменную при сохранении состояния вашего приложения. Большинство переменных были бы полезными для указателей на объекты времени выполнения, такие как поверхности. И такие не должны быть сохранены, а также любые декомпрессированные изображения, звуки и т. Д. Вместо этого, при возобновлении, вы должны снова загрузить их из ресурсов APK. Я не думаю, что есть эффективный способ сделать это без работы программистов. Извините, кто-то должен знать, какое приложение загружается.

Я думаю, вы неправильно поняли, как работает и ведет себя смартфон. Или, может быть, я неправильно понимаю ваш вопрос. Если вы говорили о MS Windows на рабочем столе и о том, как они заходят в спячку, это полностью отличается от того, как работают телефоны и как пользователи будут их использовать. В Windows CE спящий режим может работать хорошо, вы просто сохраняете все, что делаете, и останавливаете CPU. На одноцелевом устройстве, таком как навигационное устройство, достаточно и хорошо работает. Вы отключите навигацию, выключив устройство, и включите питание, чтобы снова начать навигацию. Резюме полной ОС здесь.

Но смартфоны не будут спать как целое устройство. У них много приложений. И если одному приложению ничего не нужно делать, это не значит, что все устройство может спать из-за этого. Это телефон, вы должны иметь возможность принимать звонки. Получать письма. Используйте GPS для записи трека. Сама ОС ДОЛЖНА продолжать работать, в отличие от спящих окон.

Так что просто сериализуйте минимум информации, необходимой для восстановления в старом состоянии. Система не может сделать это за вас, так как сетевые соединения, созданные вами час назад, недействительны, файлы могут быть перемещены другим приложением. Если ваша деятельность или служба запущена AlarmManager, вы должны хранить то, что вы делали до себя. Используйте SharedPreferences или базу данных Sqlite. Если у вас есть простые данные, используйте только пакет OnSaveInstanceState.

Вы хотите объяснить, что вы пытаетесь выполнить? Я думаю, что вы хотите разработать свое приложение неправильно.

Смежные вопросы