Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ApiDemos示例解析(75):Graphics->PurgeableBitmap

Android ApiDemos示例解析(75):Graphics->PurgeableBitmap

編輯:關於Android編程

BitmapFactory.Option 由一個屬性public boolean inPurgeable

如果inPurgeable 設為True的話表示使用BitmapFactory創建的Bitmap用於存儲Pixel的內存空間在系統內存不足時可以被回收,在應用需要再次訪問Bitmap的Pixel時(如繪制Bitmap或是調用getPixel),系統會再次調用BitmapFactory decoder重新生成Bitmap的Pixel數組。為了能夠重新解碼圖像,bitmap要能夠訪問存儲Bitmap的原始數據。

本例顯示了inPurgeable設為True和False的兩種情況,不停的創建一個bitmap

[java] 
mBitmapArray[mDecodingCount] = BitmapFactory.decodeByteArray( 
 bitstream, 0, bitstream.length, mOptions); 

mBitmapArray[mDecodingCount] = BitmapFactory.decodeByteArray(
 bitstream, 0, bitstream.length, mOptions);mOptions 為BitmapFactory.Option類型,mOptions.isPurgable可以為true和false。 在isPurgeable為false時表示創建的Bitmap的Pixel內存空間不能被回收,這樣BitmapFactory在不停decodeByteArray創建新的Bitmap對象,不同設備的內存不同,因此能夠同時創建的Bitmap個數可能有所不同,200個bitmap足以使大部分的設備重新OutOfMemory錯誤。

當isPurgable設為true時,系統中內存不足時,可以回收部分Bitmap占據的內存空間,這時一般不會出現OutOfMemory 錯誤。

本例有兩個例子NonPurgeable 和 Purgeable,其定義的代碼是同樣的類PurgeableBitmap和PurgeableBitmapView, 但它們在Android的Launcher都有自己的啟動圖標。這是因為在AndroidManifest.xml中使用了activity-alias定義。

activity-alias定義可以為同一個Activty指定別名,指定不同的IntentFilter或其它配置,從而使得同一個Activity可以有不同的屬性,圖標等。 activity-alias 和activity支持的屬性基本一致,在功能上和Activity基本一致。

<activity android:name=”.graphics.PurgeableBitmap”
android:label=”Graphics/PurgeableBitmap/NonPurgeable”>
<intent-filter>
< action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.SAMPLE_CODE” />
< /intent-filter>
< /activity>

<activity-alias android:targetActivity=”.graphics.PurgeableBitmap”
android:name=”Purgeable” android:label=”Graphics/PurgeableBitmap/Purgeable”>
<intent-filter>
< action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.SAMPLE_CODE” />
< /intent-filter>
< /activity-alias>

可以看到activity-alias定義的targetActivity 和activity的android:name指向同一個Activity。

程序中使用getPackageManager 讀取Activity的Label,根據Label的值來判斷啟動的是Purgeable還是NonPurgeable


作者:mapdigit
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved