-1

Моим требованием является постоянное сохранение данных в исполняемом файле. Данные имеют примитивные типы. Могу ли я использовать SharedPreferences в исполняемых файлах? Если да, то как? и если нет, то есть ли какая-либо альтернатива для постоянного хранения данных на встроенной стороне Android?Есть ли альтернатива Sharedpreference в родном андроиде?

Я не хочу использовать SQLite в родной или любой файловой операции.

Поблагодарив,

ответ

0

Edit: жаль, что я изначально прочитал вопрос неправильно

Могу ли я использовать SharedPreferences в исполняемых файлах?

Да. Если данные имеют примитивный тип, вам определенно нужно.

Как?

От разработчиков Android documentation:

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 here просто принять к сведению, что использование случае из 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, который работает как словарь:

Для каждого значения хранится там уникальный ключ.

Sidenote: Получая их все сразу вы своего рода нарушение цель этой структуры данных, но давайте продолжим

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()); 

хочет знать, есть ли пароль для пользователя сортира?

boolean johnHasPasswd = pwdHashMap.containsKey("john"); 
    String johnsPass; 

    if(johnHasPasswd) 
     johnsPass = pwdHashMap.get("john"); 

Если вы хотите использовать собственные механизмы хранения данных, вы ограничены следующие

вариантов хранения Данных являются следующим:

  • Общих предпочтений хранения личных примитивных данных в парах ключ-значение.
  • Internal Storage Храните личные данные в памяти устройства.
  • External Storage Хранить общедоступные данные на общем внешнем хранилище.
  • SQLite Базы данных Храните структурированные данные в частной базе данных.
  • сети Хранение данных Подключение к сети с вашим собственным сетевым сервером

Вы должны взглянуть на эти official docs с сайта разработчиков.

Надеюсь, это поможет!

+0

_ «Основываясь только на ваших требованиях не желая SharedPreferences» _ ОП _does_ хотите использовать 'SharedPreferences', если это возможно. – Michael

+0

Вы правы, мои плохие – HenriqueMS

+0

Спасибо за ваш ответ. Мне нужно знать, как использовать приватные примитивные данные Shared Preferences Store в парах ключ-значение в нативном C в android NDK. Требование JNI не требуется, поскольку я работаю над исполняемыми файлами. –

0

Shared предпочтения является лучшим решением для хранения данных premitive:

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES,   Context.MODE_PRIVATE); 
    Editor editor = sharedpreferences.edit(); 
    editor.putString("key", "value"); 
    editor.commit();