繁体   English   中英

品牌发布主题与不保持活动

[英]Branded Launch Theme with Don't Keep Activities

在我的应用程序中,我使用从主屏幕启动的活动的品牌启动主题( 此Google+帖子中解释的技术)。

问题是当用户从该活动导航到另一个活动并且第一个活动在后台被杀死时(比如当你Don't keep activities开启时)。 在这种情况下,每次用户按下时,都会重新创建活动并显示“启动”主题,就像用户点击主屏幕中的图标一样。

也许这在技术上是纠正的行为,但它不能提供出色的用户体验。 此外,与配置更改不一致:在重新创建活动的情况下,它似乎以“正常”主题开始。

更新 :在这个问题中挖掘我还试图在活动启动时“欺骗”初始主题集,并且我发现当第一次使用我的“启动”主题调用Activity#setTheme时,背景已经是可见的。

此解决方案假设您的主要活动被杀死的唯一时间是进程被终止(忽略Don't keep activities情况,因为这只是调试,对吧?)。

  1. 创建一个public static boolean haveShownLaunchTheme你的启动器类,我们称之为MainActivity 默认为false;

  2. 在解决方案的每个Activity中,让onCreate的第一行为:

    MainActivity.haveShownLaunchTheme = true;

  3. MainActivity.onCreate修改如下图所示:

...从:

setTheme(R.style.Theme_MyApp);
super.onCreate(savedInstanceState);

...至:

if (!haveShownLaunchTheme) {
    haveShownLaunchTheme = true;
    setTheme(R.style.Theme_MyApp);
}
super.onCreate(savedInstanceState);

还要添加以下onDestroy覆盖,以便在用户通过使用后退按钮正常退出时支持重新显示启动主题:

@Override
public void onDestroy {
    if (isFinishing()) haveShownLaunchTheme = false;
    super.onDestroy();
}

免责声明:我没有测试过这个确切的代码,但我已成功使用带有全局静态的模式来指示该进程是否已被杀死。

我在I + Lake(@ianhanniballake)的G +上发布了答案:

“不要保持活动”是一个开发者选项,原因是 - 它不是你应该开发的东西,而不能代表用户所处的情况。

我会用它进行测试以确保你正确地恢复状态,但那是关于它的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM