編輯:關於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
一、分析1、最簡單的布局:只有一個ListView如果整個頁面只有一個ListView的話,那麼由於ListView本身帶有滾動效果,所以當加載的數據超過頁面顯示的范圍時
上一節中我們繪制了一個三角形,我們在上一節的基礎上來完成矩形的繪制 。OK,開始動手做吧,首先在上一節的項目中的shape目錄下新建一個類——Sq
錯誤描述 今天在Android Studio項目中加入了jackson的開發包,編譯運行時候,引發了如下的錯誤:Error:Execution failed for ta
package com.example.listsildedel; import java.util.ArrayList; import java.util.List;