2013-04-04 3 views
0

Это простой вопрос, но я не могу найти четкой информации, чтобы помочь мне принять мое решение.Позвольте задним ходом заполнить десятки восстановленных действий?

У меня есть приложение с 2 формами (2 действия), которые заполняются для данного объекта, очищаются, а затем заполняются для следующего объекта. Это может быть сделано более 100 раз во время запуска данного приложения. Таким образом, задняя часть может быть заполнена более чем 100 действиями.

Все эти данные сохраняются в базе данных sqlite, так что я должен разрешить заполнять эту заднюю часть? Каковы последствия для производительности - хранение сотен экземпляров формы, несомненно, начнет сказываться. Являются ли эти экземпляры достаточно эффективными, чтобы мне не нужно было об этом беспокоиться, или же у них есть какой-то предел? Есть ли способ сделать хранилище backstack только введенными данными или сохраненный «экземпляр», состоящий только из введенных данных? Является ли запрос sqlite-базы данных на резервное копирование вместо этого намного менее эффективным, чем позволить загрузке предыдущих загрузок? Есть ли способ перезагрузить существующий экземпляр ala FLAG_ACTIVITY_SINGLE_TOP и очистить существующие введенные данные, но сохранить его (данные) в стопке?

Я постоянно читал/сказал, что это плохая идея, чтобы изменить поведение кнопки «Назад», «Backstack» и «Управление действиями» Android, что делает меня ориентировочным в том, чтобы сделать это как начинающий андроид.

Я считаю, что данные из обеих форм будут не больше, чем 2-й абзац этого вопроса fyi.

Благодарим за помощь.

РЕДАКТИРОВАТЬ в ответ на JoxTraex:

fill -> add -> fill -> add -> n -> commit

может быть затем

fill activity A and then instantiate and fill B -> transact to DB -> REinstantiate and fill A then REinstantiate and fill B -> transact to DB -> n -> commit

я правильно понял?

Если при этом перезагрузка, а не создание экземпляра A и B, необходимо решить проблему с задним числом, так как в ней будет только 2 действия.

Это приводит к путанице в отношении того, что будет делать onbackpressed - будет ли оно перезагружать ранее введенные данные или работать не более чем в два раза, поскольку в задней части было всего 2 действия?

ответ

0

Вы должны не использовать стек, чтобы отслеживать данные ни вы должны иметь 100 экземпляр деятельности!

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

fill -> commit -> fill -> commit 

Вместо изменить его просто:

fill -> add -> fill -> add -> N -> commit 

Таким образом, вы упрощаете свой дизайн и более эффективно используете свою форму.

fill в моем случае, заполняет все соответствующие данные (в идеале на одном экране) add означает толкать, что данные в транзакции и commit означает завершить сделку и нажать все. N означает повторить шаблон fill -> add. После завершения транзакции вернитесь в главное меню/представление новых соответствующих данных. Кроме того, я бы рекомендовал вместо этого использовать ListView, который заполняется всеми элементами вместо использования стека действий.

+0

'fill' составляет между двумя действиями, так как форма не помещалась на 1 экран, поэтому было бы неплохо сохранить след только одной формы до задней части. Также означает, что действия должны быть восстановлены в 100 раз ... Вы говорите запрос и/или заполняете ('add' to) базу данных даже при навигации между формой A и формой B? Также, что вы подразумеваете под 'commit'? Учитывая, что у меня есть 2 формы, было бы хорошей идеей отключить backstack и просто зависеть от базы данных? (Переопределить кнопку «Назад», чтобы вместо этого выполнить соответствующие операции с базой данных) – nme32

+0

«заполнить» в моем случае, заполняет ВСЕ соответствующие данные (в идеале на одном экране) 'add' означает, что эти данные передаются в транзакцию, а' commit' означает завершить транзакцию и нажать все. 'N' означает повторение шаблона' fill -> add'. После завершения транзакции вернитесь в главное меню/представление новых соответствующих данных. Кроме того, я бы рекомендовал вместо этого использовать ListView, который заполняется всеми элементами вместо использования стека действий. – JoxTraex

+0

Ах. 'fill -> add -> fill -> add -> n -> commit' может быть тогда" заполнять активность A, а затем создавать и заполнять B -> транзакцию в DB -> REinstantiate и заполнять A, а затем REinstantiate и заполнять B -> transact к DB -> n -> commit' - правильно ли я понял? Если поэтому перезагрузка, а не создание экземпляра нового экземпляра A и B, необходимо решить проблему с backstack, так как в ней будет только 2 действия. Это приводит к путанице в отношении того, что будет делать «onbackpressed» - перезагрузит ли ранее введенные данные или будет работать не более двух раз, поскольку в стопке осталось всего 2 действия? – nme32

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