2015-07-24 2 views
-3

У меня есть мобильное приложение, которое после установки должно генерировать случайный String, который должен храниться на протяжении всего жизненного цикла до его удаления.Android - сохранить значение переменной через жизненный цикл приложения

Я думал об использовании static variables, но, как указано here, если я убью свое приложение, статическая переменная снова будет пуста и будет повторно инициализирована.

Что мне нужно сделать, это создать случайную строку во время установки APK и сохранить ее значение, пока приложение установлено, неважно, убито или нет.

Есть ли способ достичь этого?

+0

использовать общие настройки для этого – MilapTank

+0

затем попытаться сохранить в sharedpreferences или в SQLite Databse – Pavya

+0

'публичный статический окончательный ИНТ СЕМЬ = 7;' всегда будет 7 Я думаю –

ответ

2

Вам необходимо использовать SharedPreferences. Официальный учебник о том, как получить и установить SharedPreference, - here.

1

Да, вы правы. Если вы создадите статическую переменную, она будет жива до тех пор, пока ваши приложения не будут запущены, когда она будет очищена от фона, значение переменной будет равно нулю.

Для этого есть 2 возможности, которые могут решить проблему:

  1. Используйте разделяемое предпочтение, но вы потеряете свою ценность, если пользователь в настройки и оттуда пользователь четкого данные приложений

  2. Пользователь Sqlite db вы также потеряете свои данные, когда пользователь очистит данные приложения или удалит пользователя.

использование 2, если ваши данные большие других мудрого 1 является best.Tanks.

+0

Я думаю, что четкие данные также удалят sqlite db. Или вы сохраните db во внешней памяти –

+0

Я думаю, что это действительно так, и ... Попробуй. – Sonhja

+0

Да, да. Как будто была сделана новая установка. – Sonhja

1
When You install your app then you have to store value in shardeprefrence is better option for you 
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); 
} 
0

Прежде всего, я хотел бы создать строку внутри приложения. Для этого вам нужно создать класс, который расширяет 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(); 
    } 
} 

затем в каждой деятельности/Услуги/BrodcastReceiver вашего проекта, может считывать значение с использованием

String random = PreferenceManager.getDefaultSharedPreferences(aContext).getString("MY_KEY"); 

, где aContext - это контекст Activity/Service и так далее.

1

Я думаю, вам нужно использовать SharedPreferences vars ... Эти методы используются только для значений String, если вам нужно сохранить int, floats и т. Д. ... вы можете создавать разные методы или просто применять код, когда вам это нужно. Я думаю, что лучший способ имеет методы, потому что вам не нужно повторять код и контролировать значения, это проще ...Смотрите ниже код, чтобы узнать использование 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); 

Это вары только исчезаю, когда приложение будет удалено, вы можете получить эти значения всегда, если вам имеют доступ к контексту ... Скажите, помог ли я вам и хорошо программировал!

Смежные вопросы