Определить, было ли запущено приложение с главного экрана?

#android

#Android

Вопрос:

В моей основной деятельности onCreate я устанавливаю TextView на текущую дату. Из этого действия я запускаю activityforresult activity2, где я могу изменить дату. В activityresult я устанавливаю TextView на любую возвращенную дату.

Теперь, если вы закроете основное действие, а TextView не будет текущей датой. При следующем открытии (с помощью кнопки на главном экране или панели приложений) я бы хотел, чтобы в TextView была установлена текущая дата.

После того, как оно откроется в первый раз, при следующем открытии вы не нажмете onCreate. Я пытался использовать onResume, однако это не позволяет activity2 onActivityResult изменять дату.

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

1. ваш вопрос неясен, пожалуйста, уточните немного подробнее

2. Не могли бы вы, пожалуйста, предоставить фрагменты кода, чтобы мы могли точно видеть, где вы хотите что вызвать? Кроме того, есть ли у вас полное представление о жизненном цикле Android?

Ответ №1:

Как насчет чего-то подобного:

Прежде всего, создайте onSaveInstanceState(Bundle) метод и сохраните в нем текущее содержимое даты TextView . Это вызывается перед тем, как Android остановит, скроет или уничтожит вашу активность.

При запуске activity2 будет вызван ваш onStop() из activity1. Там установите флаг, указывающий, вызывается ли onStop() из-за того, что вы запускаете новое действие (сделайте intent для activity2 членом, а не локальной переменной для этого). Убедитесь, что вы сохранили этот флаг в onSaveInstanceState activity1.

Реализуйте onRestoreInstanceState(Bundle) в activity1 и восстановите в локальных переменных значения даты и флага.

Наконец, в onResume activity1 установите флажок — если вы возобновляете работу, потому что возвращаетесь из activity2, не меняйте TextView, поскольку он будет установлен в onActivityResult , в противном случае вы можете безопасно восстановить сохраненное значение даты.

Ответ №2:

Попробуйте сохранить значение даты из activity2 в Android SharedPreferences.

Вы можете установить дату в соответствии с предпочтениями, используя что-то вроде этого:

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString(MY_NAME, "Sai");
prefsEditor.putString(MY_WALLPAPER, "f664.PNG");
prefsEditor.commit();
  

и вы можете прочитать настройки, используя что-то вроде этого:

 SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString(MY_NAME, "nothing");
String wallPaper = myPrefs.getString(MY_WALLPAPER, null);
  

Установите флаг типа «dateWasAlreadySet» в SharedPreferences, если дата была установлена из activty2, чтобы вы знали, что дата уже установлена.

Псевдокод:

 If(SharedPreferences.dateWasAlreadySet){
    activity1.textField.text = SharedPreferences.get("myDate");
} else {
    activity1.textField.text = currentDate;
}
  

Надеюсь, вы понимаете, что я имею в виду.