उत्पन्न करता है मेरे पास एक कस्टम WebView
है और मैं इसकी सामग्री का एक बिटमैप प्राप्त करना चाहता हूं (ऑफस्क्रीन शामिल)।वेबव्यू से बिटमैप प्राप्त करना आउटऑफमेमरी क्रैश
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;
}
यह बात करने के लिए ठीक काम करता है जब मैं एक बहुत में ज़ूम, जिस स्थिति में मैं OutOfMemory क्रैश मिलता है: मैं इस कोड है, जो मैं here से मिला करते थे। मैंने इसे एक ही तस्वीर के साथ परीक्षण किया (थोड़ा ज़ूम किया गया और अधिकतम तक ज़ूम किया गया) और यह ऊपर वर्णित तरीके से व्यवहार करता है।
मैं शुरू में
while(webView.canZoomOut()){
webView.zoomOut();
}
जोड़कर इस का मुकाबला करने की कोशिश की है, लेकिन यह सब पर मदद नहीं करता है।
त्वरित वैकल्पिक हल आप android जोड़ सकते हैं। –
गंदा कामकाज जो अधिकतर समय काम नहीं करेगा .... यह आपके ओओएम अपवाद – MarkySmarky
में देरी करेगा, यह स्पष्ट है कि आप बहुत बड़े बिटमैप प्राप्त करना चाहते हैं। आपको अपने ऐप में अनंत स्मृति नहीं मिल सकती है। –