私はカスタムWebView
を持っており、その内容(オフスクリーンを含む)のビットマップを取得したいと考えています。私は、その場合には、私はのOutOfMemoryクラッシュを取得し、多くに拡大するとそれはポイントまで正常に動作しますWebViewからビットマップを取得するとOutOfMemoryクラッシュが発生する
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;
}
:私はhereからもらったこのコードを、使用していました。私はこれを同じ画像(わずかにズームして最大にズームしたもの)でテストしましたが、これは上記と同じように動作します。
私は開始時に
while(webView.canZoomOut()){
webView.zoomOut();
}
を追加することでこれに対抗しようとしたが、それは全く役に立ちません。
クイック回避策。 –
ほとんどの時にうまくいかない厄介な回避策.... OOM例外を遅らせるだけです – MarkySmarky
私にとっては、大きすぎるビットマップを取得することは明らかです。あなたのアプリで無限の記憶を得ることはできません。 –