2014-09-08 2 views
0

История В моем проекте у меня около 30 различных экранов, чтобы получить данные. Теперь, как правило, мне приходится передавать значения с одного экрана на другой. (Например, UserID, StoreID, City и т. Д.)Передача значения с экрана на экран

Что я сейчас делаю для передачи значений. Я продолжаю делать это на 30 экранах.

//Sender Activity 
String strValue = "xyz";  
Intent i = new Intent(this, ToClass.class); 
i.putExtra("strValue", strValue); 
startActivity(i); 

//Receiving Activity 
Intent intent = getIntent(); 
String strValue= intent.getExtras().getString("strValue"); 

Теперь мой технический вопрос является
а) Значение по-прежнему жив (или использует память) в отправителе деятельности. Итак, как мне очистить при переходе к следующему мероприятию?
b) Должно ли быть лучше, если я сохраню значение strValue в DB и значение доступа от DB всякий раз, когда мне нужно? Следовательно, сохранение моей памяти.
c) Это лучший подход в Android. То, что я сейчас использую.

+0

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

+0

Экономия в БД и извлечение увеличит накладные расходы процессора. –

+0

вы можете сделать вызов 'finish()' после вызова 'startActivity()'. Другой вариант - указать ваши значения на «null», если ваша активность заканчивается. Поэтому в 'onPause()' проверьте, завершает ли ваша деятельность http://developer.android.com/reference/android/app/Activity.html#isFinishing() и делает 'strValue = null;' Посмотрите на потоки обсуждение «настройки производительности Java». – nightfixed

ответ

1

a) оставить очистку памяти/данных в GC, он позаботится о неиспользуемых данных в вашей памяти.

б) если это только одно значение, которое вы не хотите, чтобы положить его в DB просто потому, что он будет использовать memory тоже, и это займет гораздо больше времени (с точки зрения ms я думаю/накладные расходы), а не передавая его в виде пучка или в sharedpreference

c) если вы хотите, чтобы ваш strValue был жив только в том случае, когда приложение находится в живых. это будет ваш подход. и если вы хотите, чтобы strValue был в памяти, я предполагаю, что это всего лишь 1 значение, вы можете использовать sharedpreference. и если у вас так много данных, которые вам нужно положить в память, пришло время использовать sqlite.

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