Выполнить код только один раз после того, как приложение установлено на Android-устройстве
Я хочу запустить кусок кода один раз только после установки приложения. После того, как он был выполнен, эта часть кода не должна вызываться снова, даже для обновления.
Ответы
Ответ 1
- Проверить, является ли логическое значение X истинным в общих настройках
- Если нет:
а. Запустите специальный код
б. Сохранить x как true в общих настройках
Например:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) {
// run your one time code
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
Ответ 2
В прошлом я использовал общие предпочтения, но если вы хотите что-то сделать, то вы также можете посмотреть на установочный приемник. MyInstallReciever реализует BroadcastReciever
<receiver
android:name="com.MyInstallReciever"
android:exported="true">
<intent-filter>
<action
android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Ответ 3
используйте этот простой код
if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) {
/*
* your code here
*/
getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit();
}
Ответ 4
Используйте логическое значение, чтобы проверить, выполняется ли первое выполнение кода или нет.
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedpreferences.edit();
if(sharedpreferences.getBoolean("is_first_exec",false))
{
editor.putBoolean("is_first_exec",false);
//your code here ...
}
getBoolean()
как и любой другой метод get SharedPreference, принимает второй параметр по умолчанию, который в первый раз вернет значение null (поскольку в файле SharedPreference ничего нет). Таким образом, код внутри блока if(){...}
будет выполнен только один раз.
Сноски: SharedPreferences
Ответ 5
Thread t = new Thread(new Runnable() {
@Override
public void run() {
// Initialize SharedPreferences
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
// Create a new boolean and preference and set it to true
boolean isFirstStart = getPrefs.getBoolean("firstStart", true);
// If the activity has never started before...
if (isFirstStart) {
// Launch app intro
final Intent i = new Intent(MainActivity.this, DefaultIntro.class);
runOnUiThread(new Runnable() {
@Override public void run() {
startActivity(i);
}
});
// Make a new preferences editor
SharedPreferences.Editor e = getPrefs.edit();
// Edit preference to make it false because we don't want this to run again
e.putBoolean("firstStart", false);
// Apply changes
e.apply();
}
}
});
// Start the thread
t.start();