Kotlin: как мне проверить, было ли приложение уже открыто один раз?

#kotlin #sharedpreferences

#kotlin #sharedpreferences

Вопрос:

Я создаю приложение в Flutter, и мне нужно запустить фрагмент кода в Kotlin, чтобы проверить, запущено ли приложение при первом запуске.

Я узнал, что это код на Java, но как мне сделать это в Kotlin?

 public class MyActivity extends Activity {

    SharedPreferences prefs = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Perhaps set content view here

        prefs = getSharedPreferences("com.mycompany.myAppName", MODE_PRIVATE);
    }

    @Override
    protected void onResume() {
        super.onResume();

        if (prefs.getBoolean("firstrun", true)) {
            // Do first run stuff here then set 'firstrun' as false
            // using the following line to edit/commit prefs
            prefs.edit().putBoolean("firstrun", false).commit();
        }
    }
}
  

Комментарии:

1. Если вы скопируете и вставите код Java в исходный файл Kotlin в Android Studio, он преобразует его для вас.

2. все, что делает этот код, это пытается вызвать сохраненное значение firstrun и по умолчанию true , если оно не существует (т. Е. Если оно еще не установлено, предположительно, потому что это первый запуск!). А затем, выполнив все при первом запуске, они устанавливают это значение для следующего раза. В Kotlin то же самое!

Ответ №1:

На самом деле довольно просто:

 class MainActivity : Activity() {

    private lateinit var sharedPrefs: SharedPreferences
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        sharedPrefs = getSharedPreferences(packageName, MODE_PRIVATE)
    }
    
    override fun onResume() {
        super.onResume()
        if (sharedPrefs.getBoolean("firstRun", true)){
            sharedPrefs.edit().putBoolean("firstrun", false).commit()
        }
    }

}