我的要求是将数据持久存储在本机android可执行文件中。数据是原始类型。我可以在可执行文件中使用SharedPreferences吗?如果是,那怎么样?如果没有,那么是否有任何替代方法可以持久存储原生端android?
我不想在本机端或任何文件操作中使用SQLite。
感谢,
答案 0 :(得分:0)
编辑:对不起我最初读错了这个问题
我可以在可执行文件中使用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的好处,这对于查找和获取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的 数据库将结构化数据存储在专用数据库中。
- 网络连接使用您自己的网络服务器在网络上存储数据
您应该从开发者网站查看这些official docs。
希望这有帮助!
答案 1 :(得分:0)
共享偏好是存储预存数据的最佳解决方案:
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();