Android 设置BitmapDrawable tileMode将使应用程序重新启动

Android 设置BitmapDrawable tileMode将使应用程序重新启动,android,android-drawable,android-bitmap,bitmapdrawable,Android,Android Drawable,Android Bitmap,Bitmapdrawable,虽然我的应用程序在大多数设备上运行良好,但在一些设备(LG G3、三星Galaxy S6)上,我遇到了一个奇怪的错误,我无法真正展开: 将tileMode(通过XML或编程方式)设置为bitmapprawable上的任何内容(climp/repeat/mirror),即布局的背面,会使背景完全变黑,并且应用程序在大约20秒后重新启动,没有任何出错的迹象(LogCat中没有消息,我的活动的这些回调都没有被调用:onPause(),onStop(),onDestroy()) 由于这些冻结/崩溃之间存

虽然我的应用程序在大多数设备上运行良好,但在一些设备(LG G3、三星Galaxy S6)上,我遇到了一个奇怪的错误,我无法真正展开:

tileMode
(通过XML或编程方式)设置为
bitmapprawable
上的任何内容(
climp
/
repeat
/
mirror
),即布局的背面,会使背景完全变黑,并且应用程序在大约20秒后重新启动,没有任何出错的迹象(LogCat中没有消息,我的活动的这些回调都没有被调用:
onPause()
onStop()
onDestroy()

由于这些冻结/崩溃之间存在一些不一致性,这取决于所使用的
位图
,因此我开始使用
.png
图像,并发现,如果减小这些图像的大小,我可以消除(大部分)这些崩溃(虽然线程与我遇到的问题不完全相同,但它意外地帮助了我。将相关布局的
layerType
设置为
软件
类似

  • android:layerType=“software”
,或

  • view.setLayerType(view.LAYER\u TYPE\u软件,空);

  • 使黑色背景和应用程序重新启动消失

    结果还表明,缩小背景图像并不能解决问题,只会减少背景图像的出现频率


    不管怎样,谢谢你的帮助!还有那些更大的PNG(>200x200)如果不使用tileMode会发生什么情况?那么一切都很好,只是图像被拉伸到布局的大小。使用android:gravity
    我没有提到,但是我使用重复的图像,所以我会用一个较小的图像覆盖整个背景,在两个方向上重复,而不改变布局的大小外出。我认为
    android:gravity
    不适用于此。因此我确实需要设置
    tileMode
    。因此,如果std
    BitmapDrawable
    不适用于您,请使用自定义
    ShapeDrawable.ShaderFactory来测试
    ShapeDrawable
    ,我现在非常爱您。过去的5天,每天4个多小时,试图诊断和解决这个问题。我正要永远退出android开发(不是开玩笑)。当我读到你的OP时,我的胸部简直兴奋得爆炸了——这与我遇到的问题完全一样,而且
    android:layerType=“software”
    据我所知,已经完全解决了这个问题……我只是想让你知道这对我有多大帮助。我完全知道你在说什么!:D在解决这个问题上付出了同样的努力,几乎也放弃了;)