Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android WebView的内存转换_Android_Webview_Bitmap - Fatal编程技术网

Android WebView的内存转换

Android WebView的内存转换,android,webview,bitmap,Android,Webview,Bitmap,为什么WebView使用如此小的内存来显示位图 这是一个位图,大小为3000*2077 http://img.bz1111.com/d7/2012-8/2012081210376.jpg 当我在ImageView中显示它时,它投射了超过20MB的内存来显示itI think位图使用ARGB_8888解码 public class ImageViewActivity extends Activity { private ImageView mImageView; @Override prot

为什么WebView使用如此小的内存来显示位图

这是一个位图,大小为3000*2077

http://img.bz1111.com/d7/2012-8/2012081210376.jpg
当我在ImageView中显示它时,它投射了超过20MB的内存来显示itI think位图使用ARGB_8888解码

public class ImageViewActivity extends Activity {

private ImageView mImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ImageView imageView = new ImageView(this);
    mImageView = imageView;

    setContentView(imageView);

    new LoadImageTask().execute("http://img.bz1111.com/d7/2012-8/2012081210376.jpg");
}

private class LoadImageTask extends AsyncTask<String, Void, Bitmap> {
    @Override
    protected Bitmap doInBackground(String... params) {
        try {
            BitmapFactory.Options options = new BitmapFactory.Options();
            return BitmapFactory.decodeStream(new URL(params[0]).openStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        mImageView.setImageBitmap(bitmap);
    }
}
而在WebView中,它的大小仅为40KB:

public class WebViewActivity extends Activity {

private static final String HTML_WITH_IMAGE = "<html>" +
        "<head></head>" +
        "<body>" +
        "<img src=\"%s\" />" +
        "</body>" +
        "</html>";

private static final String HTML_WITHOUT_IMAGE = "<html>" +
        "<head></head>" +
        "<body>" +
        "<span>Empty</span>" +
        "</body>" +
        "</html>";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // create WebView;
    WebView webView = new WebView(this);
    setContentView(webView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    String imageUrl = getIntent().getStringExtra("image_url");//http://img.bz1111.com/d7/2012-8/2012081210376.jpg
    String html = null;
    if (TextUtils.isEmpty(imageUrl)) {
        html = HTML_WITHOUT_IMAGE;
    } else {
        html = String.format(Locale.ENGLISH, HTML_WITH_IMAGE, imageUrl);
    }

    webView.loadDataWithBaseURL("http://www.google.com",
            html,
            "text/html",
            "utf-8",
            "");
}

我想知道,WebView或WebKit如何解码位图,并保存位图以绘制?

好的,我知道了。我在Android Studio中使用内存监视器,它只监视java的dalvik堆。另一方面,Webkit在本机堆中进行解码和绘制位图。