【问题标题】:Android 5.0 odd behaviour with background drawableAndroid 5.0 带有背景可绘制的奇怪行为
【发布时间】:2015-07-15 22:37:11
【问题描述】:

我注意到 Android 5.0 lollipop 上有一些奇怪的行为。当我有一些像 LinearView 和 android:background="@drawable/image" 这样的背景可绘制视图时。当我的应用程序崩溃(意外错误!)而不是(仅有时)背景消失并且背景中只有黑屏(好像这个可绘制对象已被删除)

我还看到 2 张图片出现一些奇怪的行为,它们在闪烁,但没有出现......

当通知出现在顶部时,几秒钟内会有一些奇怪的红色矩形,然后它会更改为正确的图标。

应用程序在 Android 4.4 上运行良好,但在安装 Android 5.0 固件后,它似乎出现了这种奇怪的行为。

我忽略了文本标签的字体/颜色和强制大写字母存在问题

在典型控件中是否有什么地方发生了变化/停止工作以及应该如何适当地修复它?

更新! 重新启动我的应用程序后,它可以正常工作!但此类行为可能会促使潜在用户宁愿卸载应用,也不愿重启手机!

【问题讨论】:

    标签: android image background android-5.0-lollipop


    【解决方案1】:

    我遇到了完全相同的问题。一开始,该应用程序因 OOM (OutOfMemory) 而崩溃。以更好的方式管理应用程序不再崩溃的内存,但可以通过设置 > 更多 > 应用程序管理器 > MyApp > FORCE STOP 重现相同的行为(背景消失并且背景中只有黑屏)。打开应用程序再次出现奇怪的行为(背景消失)。清除数据(或重新启动设备)并再次打开应用程序是解决问题的唯一方法,直到下一次崩溃/强制停止。

    在主要活动中基本上是这样的

    private LruCache<String, Bitmap> mMemoryCache;
    mMemoryCache = new LruCache<String, Bitmap>(1024*1024*5);
    //...
    

    我是这样改的:

    private LruCache<String, Bitmap> mMemoryCache;
    //...
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    int availMemInBytes = am.getMemoryClass() * 1024 * 1024;
    mMemoryCache = new LruCache<String, Bitmap>(availMemInBytes/8 );
    

    之前的代码在分配“maxSize”时没有考虑有效的可用内存。新代码解决了这个问题。 我不确定这个问题是否与新的 ART(Android OS 直到 4.4.2 使用 Dalvik,最新使用 ART)或其他一些 API 更改有关,顺便说一句,我解决了上面的代码。 我希望对其他人有用。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 2013-02-13
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多