做安卓客戶端,顯示幫助文檔,幫助文檔很大,每次顯示都報內存溢出!試過很多方法最終成功使用的是:
public static Bitmap loadView(int resId, Activity activity, ImageView iv) { Display display = ((WindowManager) activity .getSystemService(Activity.WINDOW_SERVICE)).getDefaultDisplay(); float displayWidth = display.getWidth(); float displayHeight = display.getHeight(); BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; options.inJustDecodeBounds = true; BitmapFactory.decodeResource(activity.getResources(), resId, options); float height = options.outHeight; float width = options.outWidth ; float scaleX = width / displayWidth ; float scaleY = height / displayHeight ; float scale = 1; float scaleMax = Math.max(scaleX, scaleY); if (scaleMax > 1) { scale = scaleMax; } options.inJustDecodeBounds = false; int inSampleSize = (int) Math.ceil( scale ) ; if(inSampleSize < 3){ //圖片太多,這裡是制定最少顯示的比例 inSampleSize = 3 ; } options.inSampleSize = inSampleSize ; Bitmap bm = BitmapFactory.decodeResource(activity.getResources(),resId, options); iv.setImageBitmap(bm) ; return bm ; }
這樣寫對於顯示一次的幫助文檔是很有幫助的,但是多次顯示還是會有問題,為什麼會這樣呢?因為android底層是用C,大傢都知道java是會自動回收資源的, 但是C卻不會自動回收,於是找到Bitmap的recycle方法,這個方法要在該Bitmap不在使用的時候才能調用,否則在使用它是 它已經不存在。