У нас есть краткие sh отчеты из нашего приложения, которые мы не можем объяснить. Cra sh происходит в MyActivity
, потому что ожидаемое «дополнительное» отсутствует в Intent
. У нас есть обширная регистрация в нашем приложении, и это последовательность обратных вызовов жизненного цикла, которые мы видим, когда это происходит:
06:04:22.574#a.b.c.MyActivity.onCreate() with flags 0 a.b.c.MyActivity@80773a0
06:04:22.592#a.b.c.MyActivity.onStart() a.b.c.MyActivity@80773a0
06:04:22.596#a.b.c.MyActivity.onResume() a.b.c.MyActivity@80773a0
06:04:23.601#a.b.c.MyActivity.onPause() a.b.c.MyActivity@80773a0
06:04:23.614#a.b.c.MyActivity.onNewIntent() with flags 30000000 a.b.c.MyActivity@80773a0
06:04:23.654#a.b.c.MyActivity.onResume() a.b.c.MyActivity@80773a0
Мы регистрируем идентификатор объекта (в данном случае 80773a0
), чтобы мы могли сказать, как используется много экземпляров данного Activity
.
Вы можете видеть (из-за идентификатора объекта), что здесь задействован только один экземпляр MyActivity
. Activity
создается, запускается и возобновляется как обычно. В оригинальном Intent
нет специальных флагов (мы регистрируем флаги в onCreate()
и onNewIntent()
).
Приблизительно через 1 секунду после onResume()
мы видим вызов onPause()
, за которым сразу следует по телефону onNewIntent()
, а затем onResume()
. Intent
, переданный в onNewIntent()
, содержит флаги 0x30000000
, которые равны FLAG_ACTIVITY_NEW_TASK
(0x10000000)
и FLAG_ACTIVIY_SINGLE_TOP
(0x20000000
). Intent
, переданный в onNewIntent()
, не имеет дополнительных функций, которые вызывают приложение to cra sh.
Мы дважды проверили, и в нашем коде абсолютно нет места, где мы установили бы оба этих флага в Intent
.
Мы не понимаем, что вызывая вызовы onPause(), onNewIntent()
и onResume()
, и мы не понимаем, почему Intent
имеет этот набор флагов и почему он не содержит необходимых «дополнений». В приложении есть только одно место, где этот Activity
запускается и необходимые «дополнительные функции» помещаются в Intent
до вызова startActivity()
.
Данный Activity
работает правильно почти все время, поэтому с ним нет общих проблем Должно быть определенное c поведение, которое вызывает эту проблему, и мы исчерпали наши представления о том, что это может быть.
В записи манифеста для MyActivity
не указан специальный режим запуска.