Пар за курс, я вижу! Я вижу некоторую ценную информацию, смешанную с дорогой дезинформацией. Нет, онлайн-документы НЕ точно указывают, при каких обстоятельствах процесс прекращается. Это преднамеренно, так как может быть изменено без предварительного уведомления. Несомненно, наиболее распространенная причина вызова onDestroy () заключается в том, что системе не хватает памяти, что не так часто встречается на новых телефонах (так как у них так много памяти). Но нет никакой гарантии, что это ЕДИНСТВЕННАЯ причина, по которой это называется.
Но да, «контракт» между Android и разработчиками заключается в том, что если вы будете следовать правилам, реализуя необходимые обратные вызовы жизненного цикла, когда они необходимы, то это сработает, и вам НЕ НУЖНО точно знать, при каких обстоятельствах onStop (), onSaveInstanceState () и onDestroy () вызываются.
Теперь, в отличие от Google, я признаю, что формулировка контракта в некоторых моментах несколько расплывчата. Это связано с тем, что среди прочих менее важных причин они используют термины, которые имеют стандартное отраслевое значение, например «передний план», но используют их в слегка измененных смыслах. И изменение никогда не объясняется или объясняется только в неясных местах. Также не помогает то, что диаграмма имеет целью показать «пути, по которым активность может проходить между состояниями», но не в состоянии показать, что onDestroy () может вызываться много раз, даже в обход перехода от Resumed к Stopped. Тем не менее, текст четко описывает эту возможность.
Вот почему, к сожалению, просто недостаточно прочитать раздел «Жизненный цикл приложения» «Основы приложения». Вместо этого нужно также прочитать Javadoc для КАЖДОГО из обратных вызовов для этого для Activity, а также раздел «Основы применения» по процессам.
После этого чрезвычайно полезно помещать операторы Log.d в каждый из обратных вызовов и наблюдать вывод logcat, пока вы циклически повторяете свое приложение в течение жизненного цикла. Но даже в этом случае не полагайтесь на события жизненного цикла, происходящие в порядке, который вы видите в logcat, если вы не можете найти оправдание этому в одном из этих онлайн-документов, упомянутых выше.