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