私はAndroidのオープンソースコードを使用しています。 Launcherアプリケーションを変更して、ランチャーとホームスクリーンのアイコンをアプリケーションから変更することができます。ブロードキャストを使用してアプリケーションを再起動する - Android
ここで問題があります。アプリから「新しいアイコンを適用」ボタンを押してランチャーアイコンをリフレッシュするには、ランチャー - オンデストロイを再起動してから、onCreateを再起動する必要があります。
ログを挿入した後にオープンソースのワークフローを観察したところ、ロケールの変更中にランチャーを再起動すると、次のコールバックシーケンスが実行されることがわかりました。
ロケールの変更は何らかの形でACTION_CONFIGURATION_CHANGEDに関連しており、発生するたびにログに示されたシーケンスを使用して起動されます。
ロケールが変更されたときに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()****
私がここに持っている疑問は、外部アプリケーションからの「適用新しいアイコン」を押した後、私は明示的に放送アクションACTION_CONFIGURATION_CHANGEDを呼び出すことができますか?はいの場合、私が与えたログシーケンスを使用してランチャーが再起動され、ホーム画面に新しいアイコンが表示され、問題は解決されます。
ご迷惑をおかけして申し訳ありません。
ありがとう、私は理解しています。ブロードキャストするカスタムインテントと、言語の変更に関するACTION_CONFIGURATION_CHANGEDが共通しているのは、どちらもランチャーを起動することです。 「新しいアイコンを適用する」ランチャーの再起動の場合、言語変更のログを使用してワークフローを観察した後、言語変更のランチャ再起動のための1ステップごとに正確に従い、アイコン変更ケースにも同じことを適用しました。 – user264953
残念ながら、次のログシーケンスは、常にonResume()になります。01-01 00:03:37.796:DEBUG/Launcher(564):**** inside updateRunning()*** * autoAdvanceRunning = false 01-01 00:03:37.804:INFO/ActivityManager(264):app/com.android.launcher [再開] app.idle/true ... resumeTopActivityLocked 01-01 00:03:37.804: DEBUG/Launcher(564):****内部onResume()**** '。言語の変更の場合は、onRetainNonConfigurationInstance()、onDestroy()、onCreate()の順番に従います。 – user264953
コメント/提案はありますか? – user264953