Подтвердить что ты не робот

Когда необходимо использовать singleTop launchMode в виджетах или приложениях Android?

Я просто сожгла виджет. Я мог видеть причину проблемы, но я не мог определить, почему или ее решение. Мой виджет выдавал поиск (SearchManager), и действие запустило диалоговое окно поиска, но когда оно обратилось обратно к моему виджету, оно создало другую ссылку на виджет (т.е. Идентификатор потока был таким же, но идентификатор виджета изменено с 65 на 0).

Это заставило меня поверить, что создается новый экземпляр, и я искал документацию для параметров, которые будут применяться к этой проблеме. В конце концов, я наткнулся на android:launchMode="singleTop", и как только я установил его в AndroidManifest, альт! Мой виджет работал.

Мне понадобилось две недели для отладки.

Есть ли другие ситуации или есть более технически правильный ответ на мою проблему?

4b9b3361

Ответ 1

Я больше читал в Android Docs - я мог потратить целую жизнь на чтение своих документов и найти новую тонкую деталь, которая разбивает мой мозг:) Это объясняет мои множественные экземпляры, которых я не ожидал, однако, я настроен на то, чтобы произойти.

Android Doc для определения активности для AndroidManifest.xml

"Стандартный" и "SingleTop" режимы отличаются друг от друга только одним уважение: каждый раз, когда появляются новые намерения для "стандартной" деятельности новый экземпляр класса создается для ответьте на это намерение. Каждый экземпляр обрабатывает одно намерение. Аналогичным образом, новый экземпляр действия "singleTop" также могут быть созданы для обработки нового намерение. Однако, если целевая задача уже имеет существующий экземпляр деятельность в верхней части ее стека, этот экземпляр получит новый намерение (в вызове onNewIntent()); новый экземпляр не создается. В других обстоятельства - например, если существующий экземпляр "singleTop" активность находится в целевой задаче, но не в верхней части стека, или если он находится в верхней части стека, но не в целевая задача - новый экземпляр создаваться и помещаться в стек.