В моем приложении есть ошибка, которую я думал, что знаю, как ее устранить, но теперь я больше думал о том, что происходит, но я не уверен, что знаю исправление.
Мое приложение получаетвходящее намерение от вызывающего стороннего приложения в виде строки.Эта строка может быть отправлена как SEND
намерение или VIEW
намерение.
Все это прекрасно работает, если приложение уже не запущено ...
Вот что происходит:
- Мое приложение не запущено (не отображается в представлении запущенных приложений)
- Поделиться нажата в другом (стороннем) приложении, и мое приложение выбрано для получения общего текста (text1).
- Мое приложение открывается, и текст отображается (и обрабатывается), как и ожидалось.
- Пользователь переключается обратно на стороннее приложение и обменивается некоторым другим текстом (text2) и моим приложением.выбран для получения этого нового текста.
- Мое приложение открывается, но оригинальный текст (text1) по-прежнему отображается.
В этот момент я подумал, что ошибка связана с тем, что ячтение намерения в onCreate()
, а затем его отображение и обработка.Я думал, что, поскольку приложение уже запущено, onCreate()
не вызывается, когда приложение отображается во второй раз, когда мы переходим в жизненный цикл в onResume()
.
Однако, если я продолжу тестирование какследующим образом:
Не выходя из моего приложения, пользователь снова переключается на стороннее приложение и снова делится с моим приложением тем же фрагментом второго текста (text2). Мое приложение отображается снова, но на этот раз правильно отображается иобрабатывает второй текст.
Как это может быть, поскольку приложение все еще работает, конечно, onCreate()
по-прежнему не будет вызываться!
Я думал, что исправление былобудет просто переместить getIntent()
вызов в onResume()
(или onStart()
?), но теперь я не уверен в этом.Это правильно делать?