首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Allocation.USAGE_SHARED崩溃

Android Allocation.USAGE_SHARED崩溃
EN

Stack Overflow用户
提问于 2013-09-10 01:07:27
回答 2查看 1.5K关注 0票数 2

我在运行我使用renderscript的应用程序时崩溃了。不幸的是,logcat没有给出任何具体的细节。

代码语言:javascript
复制
b = Bitmap.createBitmap(ib.getWidth(), ib.getHeight(),ib.getConfig());

Allocation mInAllocation = Allocation.createFromBitmap(mRS, inBitmap,
                Allocation.MipmapControl.MIPMAP_NONE,Allocation.USAGE_SHARED);

Allocation mOutAllocation2 = Allocation.createFromBitmap(mRS,
                 outBitmap, Allocation.MipmapControl.MIPMAP_NONE,
                 Allocation.USAGE_SHARED);

...execute是.rs文件中的一个算法,稍后执行以下操作

代码语言:javascript
复制
mOutAllocation2.copyTo(outBitmap)`;

当我使用USAGE_SCRIPT标志而不是USAGE_SHARED进行mOutAllocation2时,相同的代码序列运行得非常好。

对为什么会发生这种事有帮助吗?

我在android中看到,如果分配是USAGE_SHARED类型的,那么从分配到位图的复制操作就会更快(见上文)。目前,我正在看到从分配到位图的副本,这些拷贝运行在secs中,以获得体面的大图像(8MP及以上)

目前我正在使用Nexus 10 (Android4.3)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-10 01:36:18

首先,您需要使用Allocation.USAGE_SCRIPT \ Allocation.USAGE_SHARED。如果可能,createFromBitmap(RenderScript,Bitmap)将为您设置。

其次,如果您的复制时间花了那么长时间,您可能也看到了脚本的执行。脚本执行是异步的,因此copyTo(位图)的挂钟时间可能包含的不仅仅是副本。

票数 3
EN

Stack Overflow用户

发布于 2017-11-02 12:51:27

我面临着同样的问题,我解决了这个问题,这个问题的发生是因为我的位图配置不是Bitmap.Config.ARGB_8888,我们应该在应用模糊之前把它转换成ARGB_8888。

代码语言:javascript
复制
    Bitmap U8_4Bitmap;
    if (yourBitmap.getConfig() == Bitmap.Config.ARGB_8888) {
        U8_4Bitmap = yourBitmap;
    } else {
        U8_4Bitmap = yourBitmap.copy(Bitmap.Config.ARGB_8888, true);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18709301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档