SharedPreferences или база данных? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть два действия в моем приложении, скажем, A & B. Для действия A нужны данные, сохраненные в B (в настоящее время Shared Preferences).Но для запроса данных в Деятельности A мне нужен контекст B. Но у Деятельности A нет никакого способа получить контекст Деятельности B (согласно потоку приложения).Есть ли способ обойти или использовать базу данных будет лучшим вариантом ??

Ответы [ 4 ]

5 голосов
/ 08 февраля 2012

Если вы храните в SharedPreferences, вам не нужен контекст действия B. Контекст действия А может обращаться к SharedPreferences приложения, поскольку они являются «глобальными» для приложения.

Пример кода

ActivityA.this.getSharedPreferences("SOMETHING", MODE_PRIVATE);

Что касается определения, нужна ли вам база данных, вы не сказали, какие данные вы храните. Поэтому невозможно сказать.

4 голосов
/ 08 февраля 2012

Зачем вам нужен контекст действия А? Вы можете просто использовать getApplicationContext().getSharedPreferences() в каждом действии для хранения / извлечения SharedPreferences.

Кроме того, в зависимости от того, какие данные вы храните, вы можете использовать Intent для передачи данных из Activity A в Activity B. Например, чтобы запустить Activity B из A, вы должны использовать что-то вроде этого:

Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra("someIntData",1234);
i.putExtra("someStringData","yourdata");
startActivity(i);

И тогда, где вам нужны данные в ActivityB, вы можете сделать:

int yourIntData = getIntent().getIntExtra("someIntData",0);
String yourStringData = getIntent().getStringExtra("someStringData");

Это будет быстрее, потому что вам не нужно обращаться к файловой системе с помощью SharedPreferences или базы данных.

2 голосов
/ 08 февраля 2012

Вы можете использовать

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

с любым действием, и оно вернет объект SharedPreferences, связанный с именем пакета вашего приложения, независимо от того, какое действие вы передаете в качестве контекста.

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

1 голос
/ 08 февраля 2012

Вы можете хранить все свои данные в SharedPreferences, и у вас есть доступ к ним из любой активности в вашем приложении.

Просто сделайте это, как объяснено здесь: http://developer.android.com/guide/topics/data/data-storage.html#pref

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...