2015-12-15 17 views
3

因爲git hub上的Fresco項目說:「在Android 4.x及更低版本中,Fresco將圖像放在Android內存的特殊區域,這可讓您的應用程序運行更快 - 並且更經常地忍受可怕的OutOfMemoryError。「爲什麼壁畫不能在Android 5.0或更高版本的ashmem中放置位圖

而從this回答,我知道它使用ashmem來放置位圖。

而我的問題是:爲什麼壁畫劑量不放在Android 5.0或更高的ashmem位圖? Android會更改某些系統功能並將其禁用嗎?

回答

2

是的,谷歌禁用Android 5.0中的可清除位圖。

0
you can see here 

https://android.googlesource.com/platform/frameworks/base/+/android-cts-7.1_r2/graphics/java/android/graphics/BitmapFactory.java

/** 
    * @deprecated As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this is 
    * ignored. 
    * 
    * In {@link android.os.Build.VERSION_CODES#KITKAT} and below, if this 
    * is set to true, then the resulting bitmap will allocate its 
    * pixels such that they can be purged if the system needs to reclaim 
    * memory. In that instance, when the pixels need to be accessed again 
    * (e.g. the bitmap is drawn, getPixels() is called), they will be 
    * automatically re-decoded. 
    * 
    * <p>For the re-decode to happen, the bitmap must have access to the 
    * encoded data, either by sharing a reference to the input 
    * or by making a copy of it. This distinction is controlled by 
    * inInputShareable. If this is true, then the bitmap may keep a shallow 
    * reference to the input. If this is false, then the bitmap will 
    * explicitly make a copy of the input data, and keep that. Even if 
    * sharing is allowed, the implementation may still decide to make a 
    * deep copy of the input data.</p> 
    * 
    * <p>While inPurgeable can help avoid big Dalvik heap allocations (from 
    * API level 11 onward), it sacrifices performance predictability since any 
    * image that the view system tries to draw may incur a decode delay which 
    * can lead to dropped frames. Therefore, most apps should avoid using 
    * inPurgeable to allow for a fast and fluid UI. To minimize Dalvik heap 
    * allocations use the {@link #inBitmap} flag instead.</p> 
    * 
    * <p class="note"><strong>Note:</strong> This flag is ignored when used 
    * with {@link #decodeResource(Resources, int, 
    * android.graphics.BitmapFactory.Options)} or {@link #decodeFile(String, 
    * android.graphics.BitmapFactory.Options)}.</p> 
    */ 
    @Deprecated 
    public boolean inPurgeable; 
相關問題