Lollipop上的黑色背景是透明的,直到第二次安装app

时间:2014-11-25 01:47:59

标签: android android-fragments android-5.0-lollipop

我在Android Lollipop(只有Android Lollipop)上的应用程序存在奇怪的透明度问题。

步骤:

  1. 卸载我的应用程序的所有先前版本。
  2. 安装应用。
  3. 注意我的应用程序中某些片段的透明度(全屏对话框,我们插入的片段,我们的拉动刷新代码)。
  4. 构建一个没有代码更改的新二进制文件,并将其作为更新安装在手机上。
  5. 碎片看起来都很好。
  6. 步骤1-3我理解 - 也许某些材料主题的应用不一致,或者我们在应用中使用的自定义主题存在问题。

    但我不明白为什么重新部署到手机可以解决问题。

    我在未经修改的Nexus 5上看到了这一点,它通过无线方式更新了Lollipop。我在Lollipop模拟器上看到了同样的问题。

    我尝试将targetSdk从19改为21,但没有帮助。 minSdk仍然是15岁。

    有没有人见过这样的问题,希望能指出我的方向进行调试?

    编辑:清除数据会导致透明度返回。强制停止应用并重新启动修复透明度问题。所以我认为cybersam在下面的回答是正确的 - 在引导中存在某种问题。但是有问题的片段使用@ android / color:black和@ color / my_app_black(= #FF000000)作为背景颜色,所以我不认为问题出在我的应用专用代码中。

2 个答案:

答案 0 :(得分:1)

没有足够的信息可以确定发生了什么,但我可以看到一个可能导致这种情况的情景。这可能与你的情况完全无关,但无论如何它都在这里:

(1)您通常依赖持久性数据(例如,存储在共享首选项,数据库,文件等中)来确定如何显示您的背景,并且有一个错误:(a)查找持久数据,(b)看到它不存在并改为使用不合适的默认值(例如,null),并且(c)由于默认值不正确而继续显示奇怪的背景。

(2)但是,您还有一些特殊代码可以检测丢失的持久数据并使用适当的值对其进行初始化。但是这个特殊代码有一个错误,它不会更新你的内存状态以匹配存储的值。

在上述情况下,在全新安装期间(并且只要应用程序未被系统杀死然后重新启动),您将继续使用错误数据并查看坏背景。在重新安装期间(您没有先卸载应用程序),系统会终止您的应用程序,然后重新安装它而不删除其持久数据。因此,在重新安装时,bug(1)不会被击中,你会看到预期的背景。

答案 1 :(得分:1)

不是真正的答案,但添加值-v21并将我的黑色颜色更改为#010101效果很好。我不知道问题是什么。看起来像一个模糊的主题滥用或一个模糊的平台错误。