我有一个移动应用,一旦安装,必须生成一个随机String
,必须在其整个生命周期内保留,直到卸载。
我正在考虑使用static variables
,但是当发布here时,如果我杀了我的应用程序,静态变量将再次为null并将重新初始化。
我需要做的是在安装APK时创建一个随机字符串,并在安装应用程序时保持其值,不管它是否被杀死。
有没有办法实现这个目标?
答案 0 :(得分:2)
您需要使用SharedPreferences
。有关如何获取和设置SharedPreference
的官方教程是here。
答案 1 :(得分:1)
是的,你是对的。如果你要创建一个静态变量,那么它将处于活动状态,直到你的应用程序运行时它将从后台清除,你的变量值将为null。
为此,有两种可能性可以解决您的问题:
使用共享偏好设置但如果用户转到设置并从那里用户清除应用数据,您将失去价值
- 醇>
用户Sqlite数据库,当用户清除应用数据或用户卸载应用程序时,您也会丢失数据。
如果您的数据很大则使用2其他明智的1是最好的。坦克。
答案 2 :(得分:1)
When You install your app then you have to store value in shardeprefrence is better option for you
答案 3 :(得分:1)
使用共享偏好
private static final String _KEY = "app_unique_key";
private static final String _PREFERENCE = "preference";
public void saveKey(String appKey) {
SharedPreferences preferences = getSharedPreferences(_PREFERENCE, Context.MODE_PRIVATE);
SharedPreferences.Editor preferenceEditor = preferences.edit();
preferenceEditor.putString(_KEY, appKey);
preferenceEditor.apply();
}
public String getAppKey() {
SharedPreferences preferences = getSharedPreferences(_PREFERENCE, Context.MODE_PRIVATE);
return preferences.getString(_KEY, null);
}
答案 4 :(得分:1)
我认为你需要使用SharedPreferences变量...如果你需要保存int,float等,这个方法只用于String值...你可以创建一个不同的方法或只是在你应用代码时需要它。我认为最好的方法是方法,因为你不需要重复代码和控制值就更容易了......请参阅下面的代码以了解使用sharedPreferences:
//Declaration of variables
//This var is name from file of shared preferences, you can save a different files for SharedPreferences
public String StartConfig_File = "sharedPref_StartConfig_File";
//And this one is a SharedPreference var from my StartConfig_File
public String userRemembered = "userRemembered";
//Method to get String from SharedPreference
public String Get_SharedPreferences(Context context, String sharedPref_File,String key_name){
//Declaration of variables
SharedPreferences sharedPref = context.getSharedPreferences(sharedPref_File, Context.MODE_PRIVATE);
String result = sharedPref.getString(key_name, null);
return result;
}
//Method to set String SharedPreference
public void Set_SharedPreferences(Context context,String sharedPref_File, String key_name,String key_value){
//Declaration of variables
SharedPreferences sharedPref = context.getSharedPreferences(sharedPref_File,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(key_name,key_value);
editor.commit();
}
以下是一个调用此方法的示例:
//generalMethods is class where I have sharedPreferences methods! Change for your class...
//Initialize values from SharedPreference
generalMethods.Set_SharedPreferences(getActivity(),generalMethods.StartConfig_File,generalMethods.userRemembered ,"MyUser");
//Get value from SharedPreference
String result = generalMethods.Get_SharedPreferences(getActivity(), generalMethods.StartConfig_File, generalMethods.userRemembered );
这个vars只在卸载应用程序时消失,如果你有权访问上下文,你总能得到这个值...告诉我,如果我帮助你并且编程好!
答案 5 :(得分:0)
首先,我将在Application中创建String。为此,您需要创建一个扩展android.app.Application
的类,将类名放在AndroidManifest应用程序标记内,然后使用此
onCreate()
public void onCreate() {
super.onCreate();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.containsKey("MY_KEY")) {
String random = generateYourRandomKey();
prefs.edit().putString("MY_KEY", random).apply();
}
}
然后在项目的每个Activity / Service / BrodcastReceiver中,您可以使用
读取值String random = PreferenceManager.getDefaultSharedPreferences(aContext).getString("MY_KEY");
其中aContext是Activity / Service的上下文等等。