Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
#1

Сохранение состояния приложения с целью экономии времени при последующих запусках - Программирование Android

11.06.2015, 13:33. Просмотров 693. Ответов 14
Метки нет (Все метки)

Всем привет. Появился небольшой вопрос. Допустим я запустил какое-то приложение, оно загрузилось и я его настроил. Весь процесс запуска и моих действий, ну скажем, занимает 10 минут. И каждый раз когда мне нужно использовать это приложение, я опять запускаю и настраиваю это приложение - все по новой, одно и то же. Так вот, а можно ли сохранить состояние уже настроенного приложения с целью экономии времени при дальнейших запусках?

P.S. Когда я выхожу из приложения путем нажатия кнопки "назад", состояние сохраняется (приложение появляется в recent apps) и я могу быстро вернуться к его использованию. Вот может этот момент и можно как либо использовать? Если андроид сохраняет состояние в RAM, может есть возможность скопировать его оттуда, а потом опять загрузить при надобности?

Может кто знает куда копать, очень прошу подсказать.

Буду очень благодарен за любую помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2015, 13:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сохранение состояния приложения с целью экономии времени при последующих запусках (Программирование Android):

Как вызвать метод только при последующих запусках приложения? - Программирование Android
Доброго времени суток))) В приложении реализую систему сохранения. Нужно, чтобы при первом запуске появлялись "дефолтные" значения, а при...

Сохранение состояния приложения - Программирование Android
Допустим пользователь выключил приложение, как сделать чтобы при повторном запуске оно запустилось в тоже место на котором оно было...

Сохранение состояния при ротации - Программирование Android
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view =...

Сохранение состояния списка - Программирование Android
Привет. Прошу помощи в организации следующей вещи: Имеется приложение, построенное в виде списка (ListView), список формируется из...

Сохранение состояния активности - Программирование Android
Всем привет, в ходе разработки клиента для сервера возник такой вопрос, можно ли сохранить состояние активности при запуске другой...

Сохранение состояния ViewPager - Программирование Android
Есть адаптер: public class QuestionFragmentPagerAdapter extends FragmentPagerAdapter { @Override public Fragment getItem(int...

14
androidlover
3 / 3 / 0
Регистрация: 20.04.2015
Сообщений: 9
11.06.2015, 13:40 #2
все зависит от того, что вы подразумевате под состоянием приложения, но думаю, что скорее всего вам надо смотреть в сторону SharedPreferences
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
11.06.2015, 14:19  [ТС] #3
androidlover, посмотрел, но думаю sharedpreferences не подойдет, т.к. там не только настройка приложения, там еще много чего. Если быть точным, то на андроиде я запускаю эмулятор с xp, в xp запускаю приложение, потом провожу некоторые действия с приложением и только потом все готово к работе. Хотелось бы просто сохранить состояние эмулятора с запущенным и настроенным приложением. Может есть еще другие варианты? Можно ли как нибудь скопировать приложение из RAM в файл, а потом загрузить его обратно для повторного использования? Тем не менее, спасибо за ответ.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
11.06.2015, 17:01 #4
Цитата Сообщение от dimcoder Посмотреть сообщение
Хотелось бы просто сохранить состояние эмулятора с запущенным и настроенным приложением
свернуть его кнопкой Home и молиться что бы система не выгрузила.
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
11.06.2015, 18:07  [ТС] #5
vxg, таки не выгружает, ну а что делать после перезагрузки девайса? Вот я думаю, система то не выгрузила приложение, вот может здесь и стоит попробовать как то скопировать прогу и файлы из RAM. Проблема наверное будет с динамическо-выделенное памятью, то бишь указатели будут невалидны, даже если получиться загрузить файлы обратно в RAM. Однако если загрузить обратно по тем же адресам, то проблем не вижу.

Вот как я примерно представляю как можно решить задачу:
1) Зарезервировать у андроида кусок RAM исключительно для эмулятора (что бы даже при выключенном эмуляторе андрюха ничего туда не загружал). Ну или иметь какую-то оболочку, которая будет отвечать за правильность переадресации (но это уже более трудоёмкий вариант).
2) Запустить эмулятор в зарезервированном куске памяти и все настроить как надо.
3) Скопировать этот кусок RAM на SD карту.
4) При надобности, когда прогу нужно будет запустить, загрузить файл из SD карты в зарезервированный кусок RAM. Ну и как то дать знать об этом андроиду, конечно же.

Будет ли работать? И если да, то как это провернуть, товарищи?

P.S. Я тут подумал, а тема то может оказаться очень полезной в принципе для любой проги, работающей на эмуляторе, т.к. ждать эмулятора не охота никому.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
11.06.2015, 22:46 #6
Цитата Сообщение от dimcoder Посмотреть сообщение
таки не выгружает
подключите USB - как правило в момент особой активности MTP всех остальных система просит покурить.
Цитата Сообщение от dimcoder Посмотреть сообщение
как можно решить задачу
эту задачу должен решать эмулятор - почему у него нет функции "пауза"? эмулятор может естественным образом корректно сохранить и восстановить свои данные. а сохранение образа памяти с эмулятором это звучит как то невероятно
1
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
12.06.2015, 08:23 #7
А разве нельзя по простому?
http://developer.android.com/guide/topics/data/data-storage.html
пусть при запуске приложения лезет в sqllite базу и достает оттуда параметры. а устанавливаются они в пункте настройки.
или, если не хочется связываться с бд, записывать все данные в xml. аналогично при запуске mainactivity считывать и устанавливать все эти данные.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
15.06.2015, 10:10 #8
Цитата Сообщение от no0ker Посмотреть сообщение
А разве нельзя по простому?
проблема ТС не в том что он хочет "экзотически" сохранить данные приложения, а в том что он хочет сохранить уже готовый образ памяти что бы потом быстрее стартовать
0
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
15.06.2015, 12:45 #9
а если совсем по простому. virtualbox - android86. настроил программу - сохранил состояние машины. выключил виртуалку. при включении - программа будет уже настроена.
1
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
15.06.2015, 14:33 #10
Цитата Сообщение от no0ker Посмотреть сообщение
virtualbox
эта штука работает на android? я имею ввиду ее можно запустить на телефоне?
1
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
15.06.2015, 16:47 #11
не, эта штука на android не работает. а зачем ее запускать на телефоне? но если уж извращаться - установить virtualbox на домашнем пк. поставить туда android 86. с телефона подключаться по rdp. запускать виртуалку. и там запускать это приложение =))
2
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,606
16.06.2015, 09:10 #12
Цитата Сообщение от no0ker Посмотреть сообщение
установить virtualbox на домашнем пк. поставить туда android 86. с телефона подключаться по rdp. запускать виртуалку. и там запускать это приложение =))
хм... забавно. интересно что скажет ТС
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
16.06.2015, 23:27  [ТС] #13
vxg, no0ker, спасибо за ответы!

Цитата Сообщение от vxg Посмотреть сообщение
подключите USB - как правило в момент особой активности MTP всех остальных система просит покурить.
А зачем подключать сматрфон к компу? Да и при "сворачивании" эмулятора, андроид его не выгружает - можно быстро восстановить все обратно, то есть проблемы с этим я не вижу. Или я Вас не так понял?

Цитата Сообщение от vxg Посмотреть сообщение
проблема ТС не в том что он хочет "экзотически" сохранить данные приложения, а в том что он хочет сохранить уже готовый образ памяти что бы потом быстрее стартовать
+1

Цитата Сообщение от no0ker Посмотреть сообщение
установить virtualbox на домашнем пк. поставить туда android 86. с телефона подключаться по rdp. запускать виртуалку. и там запускать это приложение =))
Да вы, батенька, эстет Кому-то это может и подойти, но в моем случае я как раз пытаюсь программу которая идет только на Windows запустить на андроиде.

Цитата Сообщение от vxg Посмотреть сообщение
а сохранение образа памяти с эмулятором это звучит как то невероятно
А было бы круто. Я думаю область применения нашлась бы программе которая могла бы это делать. А что нереализуемо в представленных шагах?

Цитата Сообщение от vxg Посмотреть сообщение
эту задачу должен решать эмулятор - почему у него нет функции "пауза"?
Это мысль. Думаю я так и сделаю. Но и тут не без загвоздки. Поставил три эмулятора: Qemu, Bochs и Limbo PC Emulator. Вот как дела у меня идут с каждым из них.

Qemu
Даже XP не получается пока запустить. На счет паузы, вроде save/restore поддерживается, но тоже не без плясок с бубном.

Limbo PC Emulator
Винду запустил. Функционал save/restore доступен сразу. Но, к сожалению, когда запускаю винду и нажимаю сохранить состояние системы, то процесс сохранение не завершается и бегунок просто бежит без остановки ("Please, wait. Saving VM state.") - минут 20 ждал пока сохранит, но нет. Может кто нибудь знает причину? Вот список параметров которые я выставляю в этом эмуляторе:
Кликните здесь для просмотра всего текста
Используется MicroXP by Anatomica ~392MB (образ скачан с популярного форума по ПДА)
User interface: SDL
CPU Model: pentium 3
CPU Cores: 1
RAM: 128
Hard disk B: 1000MB (этот пункт просит заполнить сам эмулятор для сохранения образа машины. Сколько сюда выставить я не знаю.)
VGA: cirrus
Почему не может сохранить я не знаю, может ему где то места не хватает?


Bochs
Получилось запустить XP. Теперь не понимаю как сделать save/restore (сохранить/восстановить). Вроде функционал поддерживается:
http://bochs.sourceforge.net/doc/docbook/user/using-save-restore.html
Но никакой верхней панели (header bar) я не вижу. Видимо на андроид ее не перенесли. Как быть? Что делать?
0
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
17.06.2015, 15:28 #14
я как раз пытаюсь программу которая идет только на Windows запустить на андроиде.
ну так еще проще! ставишь программу на компьютер с windows - подключаешься по rdp с андроида. вуаля! =)
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
18.06.2015, 15:58  [ТС] #15
no0ker, хорошая попытка, Билл... но нет, это будет слишком неудобно, да и интернет штука непостоянная.
Пока вожусь с эмуляторами
1
18.06.2015, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2015, 15:58
Привет! Вот еще темы с ответами:

Сохранение состояния Checkbox в Listview - Программирование Android
Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview состоит из текста, напротив которого стоит чекбокс. Требуется...

Сохранение состояния деятельности динамически созданных объектов - Программирование Android
Ребят, день добрый ! Задался вопросом, как сохранить состояние деятельности, ДИНАМИЧЕСКИ созданных, View, при смене активности? для...

Обеспечить редактирование и просмотр файла при последующих запусках программы - Turbo Pascal
Помогите пожайлуста надо сделать так чтобы файл был доступен после завершения программы ( чтение , добавление и т.д.) uses crt; type...

Рандом. При втором и последующих запусках программы выдаются те же числа, что и в первый раз - C++
есть небольшая игра: #include <iostream> #include <cmath> using namespace std; class Player { public: int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru