-1

私の必要条件は、ネイティブのAndroid実行可能ファイルにデータを永続的に保存することです。データはプリミティブ型です。実行可能ファイルにSharedPreferencesを使用できますか?はいの場合は、どうですか? NOの場合は、ネイティブ側のアンドロイドにデータを永続的に保存するための選択肢がありますか?ネイティブアンドロイドにSharedpreferenceの代替手段はありますか?

ネイティブ側やファイル操作でSQLiteを使いたくないです。

感謝し、

答えて

0

編集:申し訳ありませんが、私はもともと

間違った質問を読んで、私は実行可能でSharedPreferencesを使用することはできますか?

はい。データがプリミティブ型のものであれば間違いありません。

どのようにですか?私はSharedPrefs hereの使用方法についての同様の答えはただのメリットを壊しSharedPreferencesのこのユースケースに注意してください取る掲載

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

}

:アンドロイド開発者documentationから

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

あなたはネイティブのデータストレージメカニズムを使用する場合は、あなたが以下の

あなたのデータストレージオプションに制限されていますが、次のとおりです。

  • 共有設定は、専用のプリミティブデータを保存しますキーと値のペア。
  • Internal Storageデバイスメモリにプライベートデータを格納します。
  • External Storage共有外部ストレージに公開データを格納します。
  • SQLite データベース構造化データをプライベートデータベースに格納します。
  • 独自のネットワーク・サーバとの ウェブ上
  • ネットワーク接続ストアデータ

あなたは、開発者のWebサイトからこれらのofficial docsを見ている必要があります。

希望すると便利です。

+0

_「SharedPreferencesを望んでいないの要件にのみ基づいて、」_可能であれば 'SharedPreferences'を使用したい_does_ OP。 – Michael

+0

あなたは正しいです、私の悪い – HenriqueMS

+0

あなたのお返事ありがとうございます。私は共有環境設定を使用する方法を知る必要があります。秘密のプリミティブデータをアンドロイドNDKのネイティブCのキーと値のペアに格納します。私はバイナリ/実行可能ファイルに取り組んでいるので、JNIの実装は必要ありません。 –

0

共有好みはプリミティブデータを格納するための最適なソリューションです:

SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES,   Context.MODE_PRIVATE); 
    Editor editor = sharedpreferences.edit(); 
    editor.putString("key", "value"); 
    editor.commit(); 
関連する問題