Ich habe eine benutzerdefinierte WebView
und ich möchte eine Bitmap des Inhalts (Offscreen enthalten). Ich habe diesen Code, die ich von here bekam:Get Bitmap von WebView generiert OutOfMemory Absturz
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;
}
Es fein bis zu dem Punkt funktioniert, wenn ich in einem viel zoomen, wobei in diesem Fall ich OutOfMemory Absturz zu bekommen. Ich habe das mit dem gleichen Bild getestet (leicht gezoomt und auf das Maximum gezoomt) und es verhält sich genauso, wie ich oben erwähnt habe.
ich versuchte, dies zu begegnen, indem sie
while(webView.canZoomOut()){
webView.zoomOut();
}
am Anfang hinzufügen, aber es überhaupt nicht helfen.
Schnell Abhilfe - Sie können android hinzufügen: largeHeap = "true" in-Manifest-Datei für mehr Speicher. –
fieser Workaround, der die meiste Zeit nicht funktioniert .... es wird nur Ihre OOM Ausnahme – MarkySmarky
verzögern für mich ist es offensichtlich, dass Sie wan, um zu große Bitmap bekommen. Sie können in Ihrer App keinen unbegrenzten Speicher abrufen. –