【问题标题】:Restart all activities in task重新启动任务中的所有活动
【发布时间】:2012-09-05 00:56:51
【问题描述】:

我正在为我的应用实现一个设置,允许用户切换主题,用户在切换主题时将在设置活动中,而在任务上方将是主屏幕。

我希望当前activity 在主题更改后重新启动,但我也希望主屏幕重新启动,因此当用户从设置页面返回时,他会看到带有新活动的主屏幕。

重启当前activityis easy,但是如何强制当前task中的前一个activities也重启呢?

我尝试将FLAG_ACTIVITY_CLEAR_TOP / FLAG_ACTIVITY_CLEAR_TASK 添加到intent,但它会从task 中删除这些活动,所以当我从设置中回击时,我会返回主屏幕而不是我的应用主屏幕。

谢谢。

【问题讨论】:

  • 当用户返回时重新启动主要活动是否可以接受?也许,在onActivityResult
  • 这个主意不错……我试试看。
  • 我想你知道,系统使用 onConfigurationChange 来达到这个目的。如果系统语言将被更改 - 您的活动将被重新创建,onConfigurationChange() 将被调用,如果您声明您可以处理这种情况。我认为在您的情况下您应该尝试做同样的事情,但是,由于您的内部应用程序设置,我不确定如何触发 COConfigurationChange。如果可以在应用程序中这样做 - 我认为这将是一个完美的解决方案。
  • @AleksG 我接受了您的解决方案,如果您想将其发布为答案,我会接受。
  • @marmor 谢谢。我发布了答案。

标签: android android-intent android-activity


【解决方案1】:

一种可能的方法是在用户返回主 Activity 时重新启动它。如果您使用startActivityForResult 打开您的首选项活动,那么在完成该活动时,您可以使用setResult 告诉主要活动是否需要重新启动。最后,在主活动的onActivityResult 中,您可以查看传递的结果并在必要时重新启动主活动。

【讨论】:

    【解决方案2】:

    也许你可以检查你是否有任何配置更改onRestart方法,所以当你按下返回时,这个方法应该被触发。

    【讨论】:

    • 这似乎有效,但我担心我的 isThemeChanged 方法有点重,所以我不想在每次 onRestart 时都调用它。无论如何,这绝对是一个正确的答案,但在接受它之前,我正在寻找其他方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多