Edit: sorry ich lesen ursprünglich die Frage falsch
Kann ich SharedPreferences in ausführbaren Dateien verwenden?
Ja. Wenn Daten primitiver Art sind, sollten Sie das unbedingt tun.
Wie?
aus dem Android-Entwickler 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();
}
}
gab ich eine ähnliche Antwort wie SharedPrefs verwenden here einfach und beachten Sie, dass dieser Anwendungsfall von SharedPreferences Pausen die Vorteile von die HashMap, die sehr schnell ist, um einen Wert für einen Schlüssel zu finden und zu erhalten.
Eine Möglichkeit, es tun könnte, ist die folgende:
//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);
Verfahren getAll() wird eine Datenstruktur zurückkehren HashMap
genannt, die wie ein Wörterbuch funktioniert:
Für jeden Wert dort gespeichert ist ein eindeutiger Schlüssel.
Bemerkung am Rande: Durch sie alle bekommen, wenn Sie irgendwie sind, den Zweck dieser Datenstruktur zu brechen, aber lassen Sie uns weiter
Map<String, String> userNameHashMap = (Map<String, String>)userSharedPrefs.getAll();
Map<String, String> pwdHashMap = (Map<String, String>)pwdSharedPrefs.getAll();
dann können Sie, was Sie mit ihnen
wollen, dass sie in einer Liste wollen tun ? (Ich gehe davon aus, dass Ihre Benutzernamen sind Zeichenfolgen übrigens)
wollen wissen, ob es ein Passwort für Benutzer John gibt?
boolean johnHasPasswd = pwdHashMap.containsKey("john");
String johnsPass;
if(johnHasPasswd)
johnsPass = pwdHashMap.get("john");
Wenn Sie die nativen Datenspeichermechanismen verwenden möchten, Sie sind begrenzt auf die folgenden
Ihre Datenspeicheroptionen sind folgende:
- Gemeinsam genutzte Einstellungen speichern Private primitive Daten in Schlüssel-Wert-Paaren.
- Internal Storage Speichern Sie private Daten im Gerätespeicher.
- External Storage Speichern Sie öffentliche Daten auf dem freigegebenen externen Speicher.
- SQLite Datenbanken Speichern Sie strukturierte Daten in einer privaten Datenbank.
- Network Connection Speichern von Daten, die im Internet mit Ihrem eigenen Netzwerk-Server
sollten Sie haben einen Blick auf diese official docs von der Entwickler-Website.
Hoffe, das hilft!
_ „Basierend nur auf Ihre Anforderungen nicht SharedPreferences wollen“ _ Die OP _does_ verwenden möchten 'SharedPreferences', wenn möglich. – Michael
Sie haben Recht, mein schlechtes – HenriqueMS
Danke für Ihre Antwort. Ich muss wissen, wie Shared Preferences verwendet Speichern Sie private primitive Daten in Schlüssel-Wert-Paaren in systemeigenem C in android NDK. Es gibt keine JNI-Implementierung in der Anforderung, da ich an binaries/executable arbeite. –