Перезапуск приложения с помощью трансляции - Android - PullRequest
0 голосов
/ 23 марта 2012

Я работаю с открытым исходным кодом Android.Я изменяю приложение Launcher таким образом, чтобы значки Launcher и домашнего экрана можно было изменить через приложение.

Теперь у меня возникла проблема.Чтобы иконки Launcher обновлялись после нажатия кнопки «Применить новые значки» из приложения, мне нужно перезапустить Launcher - onDestroy, затем onCreate.

Наблюдая за рабочим процессом с открытым исходным кодом после вставки журналов, я заметил, что в случае перезапуска программы запуска во время изменения локали выполняется следующая последовательность обратных вызовов.

Я понимаю, что смена локали в некоторыхкстати, связанный с ACTION_CONFIGURATION_CHANGED и всякий раз, когда это происходит, Launcher перезапускается с использованием последовательности, приведенной в журнале.

Чтобы подтвердить мою точку зрения, что Launcher перезапускается при изменении локали, я провел следующий тест.Я сделал «Применить новые значки» и проверил домашний экран, значки не изменились, затем я изменил язык и вернулся на домашний экран, и значки были изменены!Кроме того, в журнале четко указывается, что Launcher перезапускается во время смены локали.

01-01 00:02:19.960: INFO/ActivityManager(264): app/com.android.launcher[RESUMED]  app.idle/true ...resumeTopActivityLocked
01-01 00:02:19.968: DEBUG/Launcher(564): ****Inside  onRetainNonConfigurationInstance()****
01-01 00:02:19.968: DEBUG/Launcher(564): ****Inside onDestroy()****
01-01 00:02:19.968: DEBUG/LauncherApplication(564): setLauncher
01-01 00:02:19.968: DEBUG/Launcher(564): ****Inside unbindWorkspaceAndHotseatItems()****
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside onWindowVisibilityChanged()****
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside updateRunning()**** autoAdvanceRunning = false
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside onDetachedFromWindow()****
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside updateRunning()**** autoAdvanceRunning = false
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside AppWidgetResetObserver()****
01-01 00:02:19.992: DEBUG/Launcher(564): ****Inside onCreate()****

У меня возникает вопрос: после нажатия «Применить новые значки» из внешнего приложения я могу явно вызвать Broadcast Действие ACTION_CONFIGURATION_CHANGED ?Если да, модуль запуска будет перезапущен с использованием заданной мной последовательности журнала, и у меня появятся новые значки на главном экране, и моя проблема будет решена.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 23 марта 2012

можно ли явно вызвать действие широковещания ACTION_CONFIGURATION_CHANGED?

Нет.Цитируя документацию , "Это защищенное намерение, которое может быть отправлено только системой."

Если да, модуль запуска будет перезапущен с использованием последовательности журнала, которую я дал

Не обязательно.Вы предполагаете, что трансляция является триггером для «последовательности журнала, которую я дал». Корреляция не подразумевает причинно-следственную связь .

Так как вы изменяете модуль запуска, вы можете сделать так, чтобы он отвечал на какую-то другую пользовательскую передачу Intent, которую отправляет ваше другое приложение.Затем вы можете ответить на эту трансляцию, вручную перезагрузив все вещи, которые могли измениться.

...