Изменить: извините, я изначально неправильно прочитал вопрос
Могу ли я использовать SharedPreferences в исполняемых файлах?
да. Если данные имеют примитивный тип, вы обязательно должны это сделать.
Как?
Из документации разработчиков Android:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
Я разместил аналогичный ответ о том, как использовать SharedPrefs здесь просто обратите внимание что этот вариант использования SharedPreferences нарушает преимущества HashMap, который действительно быстро находит и получает значение для ключа.
Один из способов сделать это:
//if you are running the code inside from an Activity
Context context = this;
SharedPreferences userSharedPrefs = context.getSharedPreferences("USER_NAME_PREFS", MODE_PRIVATE);
SharedPreferences pwdSharedPrefs = context.getSharedPreferences("PWD_PREFS", MODE_PRIVATE);
Метод getAll() вернет структуру данных с именем HashMap
, которая работает как словарь:
Для каждого сохраненного значения существует уникальный ключ.
примечание: получая их все сразу, вы как бы нарушаете цель этой структуры данных, но давайте продолжим
Map<String, String> userNameHashMap = (Map<String, String>)userSharedPrefs.getAll();
Map<String, String> pwdHashMap = (Map<String, String>)pwdSharedPrefs.getAll();
тогда можешь делать с ними что хочешь
хотите их в списке? (Кстати, я предполагаю, что ваши имена пользователей являются строками)
List<String> userNameList = new LinkedList<>();
userNameList.addAll(userNameHashMap.values());
хотите знать, есть ли пароль для пользователя john?
boolean johnHasPasswd = pwdHashMap.containsKey("john");
String johnsPass;
if(johnHasPasswd)
johnsPass = pwdHashMap.get("john");
Если вы хотите использовать собственные механизмы хранения данных, вы ограничены следующим
Ваши варианты хранения данных следующие:
- Общие настройки Храните частные примитивные данные в парах ключ-значение.
- Внутреннее хранилище Храните личные данные в памяти устройства.
- Внешнее хранилище Храните общедоступные данные в общем внешнем хранилище. .
- Базы данных SQLite Храните структурированные данные в частной базе данных.
- Сетевое подключение Храните данные в Интернете на собственном сетевом сервере
Вам следует ознакомиться с этими официальными документами от разработчиков. Веб-сайт.
Надеюсь это поможет!
person
HenriqueMS
schedule
19.10.2016