Özel bir WebView
sahibiyim ve içeriğinin bitmapini almak istiyorum (ekran dahil). Ben bu durumda ben OutOfMemory Crash olsun, bir sürü yakınlaştırmak zaman noktaya kadar iyi çalışırWebView'den Bitmap Alma, OutOfMemory çökmesini üretir
public static Bitmap getBitmapFromWebviewV2(WebView webView) {
webView.measure(View.MeasureSpec.makeMeasureSpec(
View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(),
webView.getMeasuredHeight());
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bm = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bm);
Paint paint = new Paint();
int iHeight = bm.getHeight();
bigcanvas.drawBitmap(bm, 0, iHeight, paint);
webView.draw(bigcanvas);
return bm;
}
: Ben here aldığım bu kodu, kullandı. Bunu aynı resim ile test ettim (biraz yakınlaştırılmış ve maksimuma yakınlaştırılmış) ve yukarıda bahsettiğim gibi davranıyor.
ben başındawhile(webView.canZoomOut()){
webView.zoomOut();
}
ekleyerek bunu karşı koymaya çalıştıklarını, ama hiç yardımcı olmuyor.
Hızlı çözüm - Sen android ekleyebilirsiniz: largeHeap = "true" manifest dosyasında daha bellek için. –
Çoğu zaman işe yaramayacak kötü bir geçici çözüm ... Sadece OOM istisnasını – MarkySmarky
benim için çok geciktirecek, çok büyük bir bitmap elde etmek için gittiğiniz belli. Uygulamanızda sonsuz bellek elde edemezsin. –