{"id":766,"date":"2014-01-03T08:29:47","date_gmt":"2014-01-03T08:29:47","guid":{"rendered":"http:\/\/hsiunien.sinaapp.com\/?p=766"},"modified":"2023-07-04T09:44:31","modified_gmt":"2023-07-04T01:44:31","slug":"%ef%bc%bb%e8%bd%ac%ef%bc%bdandroid%e8%a7%a3%e5%86%b3%e5%9b%be%e7%89%87%e5%8a%a0%e8%bd%bdoom%e7%9a%84%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/blog.xiunian.wang\/?p=766","title":{"rendered":"\uff3b\u8f6c\uff3dandroid\u89e3\u51b3\u56fe\u7247\u52a0\u8f7doom\u7684\u65b9\u6cd5"},"content":{"rendered":"\n<p>\u5927\u5bb6\u597d\uff0c\u4eca\u5929\u7ed9\u5927\u5bb6\u5206\u4eab\u7684\u662f\u89e3\u51b3\u89e3\u6790\u56fe\u7247\u7684\u51fa\u73b0oom\u7684\u95ee\u9898\uff0c\u6211\u4eec\u53ef\u4ee5\u7528BitmapFactory\u8fd9\u91cc\u7684\u5404\u79cdDecode\u65b9\u6cd5\uff0c\u5982\u679c\u56fe\u7247\u5f88\u5c0f\u7684\u8bdd\uff0c\u4e0d\u4f1a\u51fa\u73b0oom,\u4f46\u662f\u5f53\u56fe\u7247\u5f88\u5927\u7684\u65f6\u5019<\/p>\n\n\n\n<p>\u5c31\u8981\u7528BitmapFactory.Options\u8fd9\u4e2a\u4e1c\u4e1c\u4e86,Options\u91cc\u4e3b\u8981\u6709\u4e24\u4e2a\u53c2\u6570\u6bd4\u8f83\u91cd\u8981.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">options.inJustDecodeBounds\u00a0=\u00a0false\/true;\n\/\/\u56fe\u7247\u538b\u7f29\u6bd4\u4f8b.\noptions.inSampleSize\u00a0=\u00a0ssize;<\/pre>\n\n\n\n<p>\u6211\u4eec\u53bb\u89e3\u6790\u4e00\u4e2a\u56fe\u7247\uff0c\u5982\u679c\u592a\u5927\uff0c\u5c31\u4f1aOOM\uff0c\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6e\u538b\u7f29\u6bd4\u4f8binSampleSize,\u4f46\u662f\u8fd9\u4e2a\u538b\u7f29\u6bd4\u4f8b\u8bbe\u7f6e\u591a\u5c11\u5c31\u662f\u4e2a\u95ee\u9898\uff0c\u6240\u4ee5\u6211\u4eec\u89e3\u6790\u56fe\u7247\u53ef\u4ee5\u5206\u4e3a\u4fe9\u4e2a\u6b65\u9aa4\uff0c\u7b2c\u4e00\u6b65\u5c31\u662f\u83b7\u53d6\u56fe\u7247\u7684\u5bbd\u9ad8\uff0c\u8fd9\u91cc\u8981\u8bbe\u7f6eOptions.inJustDecodeBounds=true,\u8fd9\u65f6\u5019decode\u7684bitmap\u4e3anull,\u53ea\u662f\u628a\u56fe\u7247\u7684\u5bbd\u9ad8\u653e\u5728Options\u91cc\uff0c\u7136\u540e\u7b2c\u4e8c\u6b65\u5c31\u662f\u8bbe\u7f6e\u5408\u9002\u7684\u538b\u7f29\u6bd4\u4f8binSampleSize\uff0c\u8fd9\u65f6\u5019\u83b7\u5f97\u5408\u9002\u7684Bitmap.\u8fd9\u91cc\u6211\u753b\u4e86\u7b80\u5355\u7684\u6d41\u7a0b\u56fe\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"687\" height=\"494\" src=\"https:\/\/blog.xiunian.wang\/wp-content\/uploads\/2023\/07\/p.jpg\" alt=\"\" class=\"wp-image-1788\" srcset=\"https:\/\/blog.xiunian.wang\/wp-content\/uploads\/2023\/07\/p.jpg 687w, https:\/\/blog.xiunian.wang\/wp-content\/uploads\/2023\/07\/p-300x216.jpg 300w\" sizes=\"(max-width: 687px) 100vw, 687px\" \/><\/figure>\n\n\n\n<p>\u4e3a\u4e86\u8ba9\u5927\u5bb6\u66f4\u5bb9\u6613\u7406\u89e3\uff0c\u6211\u8fd9\u91cc\u505a\u4e86\u4e00\u4e2a\u7b80\u5355\u7684demo,\u4e3b\u8981\u529f\u80fd\u5c31\u662f\u4e00\u4e2a\u754c\u9762\u91cc\u6709\u4e2aImageView,\u70b9\u51fbImageView\u7684\u65f6\u5019\uff0c\u8fdb\u5165\u672c\u5730\u76f8\u518c\uff0c\u9009\u62e9\u4e00\u4e2a\u56fe\u7247\u7684\u65f6\u5019\uff0cImageView\u63a7\u4ef6\u663e\u793a\u9009\u62e9\u7684\u56fe\u7247\u3002Demo\u7684\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>\u7b2c\u4e00\u6b65\u65b0\u5efa\u4e00\u4e2aAndroid\u5de5\u7a0b\u547d\u540d\u4e3aImageCacheDemo.<\/p>\n\n\n\n<p>\u7b2c\u4e8c\u6b65\u65b0\u5efa\u4e00\u4e2aImageCacheUtil.java\u5de5\u5177\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public\u00a0class\u00a0ImageCacheUtil\u00a0{\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u83b7\u53d6\u5408\u9002\u7684Bitmap\u5e73\u65f6\u83b7\u53d6Bitmap\u5c31\u7528\u8fd9\u4e2a\u65b9\u6cd5\u5427.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0path\u00a0\u8def\u5f84.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0data\u00a0byte[]\u6570\u7ec4.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0context\u00a0\u4e0a\u4e0b\u6587\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0uri\u00a0uri\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0target\u00a0\u6a21\u677f\u5bbd\u6216\u8005\u9ad8\u7684\u5927\u5c0f.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0width\u00a0\u662f\u5426\u662f\u5bbd\u5ea6\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@return\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public\u00a0static\u00a0Bitmap\u00a0getResizedBitmap(String\u00a0path,\u00a0byte[]\u00a0data,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Context\u00a0context,Uri\u00a0uri,\u00a0int\u00a0target,\u00a0boolean\u00a0width)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Options\u00a0options\u00a0=\u00a0null;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(target\u00a0>\u00a00)\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Options\u00a0info\u00a0=\u00a0new\u00a0Options();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u8fd9\u91cc\u8bbe\u7f6etrue\u7684\u65f6\u5019\uff0cdecode\u65f6\u5019Bitmap\u8fd4\u56de\u7684\u4e3a\u7a7a\uff0c\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u5c06\u56fe\u7247\u5bbd\u9ad8\u8bfb\u53d6\u653e\u5728Options\u91cc.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0info.inJustDecodeBounds\u00a0=\u00a0false;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0decode(path,\u00a0data,\u00a0context,uri,\u00a0info);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0dim\u00a0=\u00a0info.outWidth;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(!width)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dim\u00a0=\u00a0Math.max(dim,\u00a0info.outHeight);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0ssize\u00a0=\u00a0sampleSize(dim,\u00a0target);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0options\u00a0=\u00a0new\u00a0Options();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0options.inSampleSize\u00a0=\u00a0ssize;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Bitmap\u00a0bm\u00a0=\u00a0null;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bm\u00a0=\u00a0decode(path,\u00a0data,\u00a0context,uri,\u00a0options);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0catch(Exception\u00a0e){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0e.printStackTrace();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0bm;\n\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u89e3\u6790Bitmap\u7684\u516c\u7528\u65b9\u6cd5.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0path\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0data\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0context\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0uri\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0options\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@return\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public\u00a0static\u00a0Bitmap\u00a0decode(String\u00a0path,\u00a0byte[]\u00a0data,\u00a0Context\u00a0context,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Uri\u00a0uri,\u00a0BitmapFactory.Options\u00a0options)\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Bitmap\u00a0result\u00a0=\u00a0null;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if\u00a0(path\u00a0!=\u00a0null)\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0BitmapFactory.decodeFile(path,\u00a0options);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0if\u00a0(data\u00a0!=\u00a0null)\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0BitmapFactory.decodeByteArray(data,\u00a00,\u00a0data.length,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0options);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0else\u00a0if\u00a0(uri\u00a0!=\u00a0null)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/uri\u4e0d\u4e3a\u7a7a\u7684\u65f6\u5019context\u4e5f\u4e0d\u8981\u4e3a\u7a7a.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ContentResolver\u00a0cr\u00a0=\u00a0context.getContentResolver();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0InputStream\u00a0inputStream\u00a0=\u00a0null;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0inputStream\u00a0=\u00a0cr.openInputStream(uri);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0BitmapFactory.decodeStream(inputStream,\u00a0null,\u00a0options);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0inputStream.close();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0catch\u00a0(Exception\u00a0e)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0e.printStackTrace();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0result;\n\u00a0\u00a0\u00a0\u00a0}\n\n\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u83b7\u53d6\u5408\u9002\u7684sampleSize.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u8fd9\u91cc\u5c31\u7b80\u5355\u5b9e\u73b0\u90fd\u662f2\u7684\u500d\u6570\u5566.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0width\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@param\u00a0target\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0@return\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0private\u00a0static\u00a0int\u00a0sampleSize(int\u00a0width,\u00a0int\u00a0target){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0int\u00a0result\u00a0=\u00a01;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(int\u00a0i\u00a0=\u00a00;\u00a0i\u00a0&lt;\u00a010;\u00a0i++){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(width\u00a0&lt;\u00a0target\u00a0*\u00a02){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0width\u00a0=\u00a0width\u00a0\/\u00a02;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0result\u00a0=\u00a0result\u00a0*\u00a02;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\u00a0result;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n}<\/pre>\n\n\n\n<p>\u7b2c\u4e09\u6b65\uff1a\u4fee\u6539ImageCacheDemoActivity.java\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package\u00a0com.tutor.oom;\n\n\nimport\u00a0android.app.Activity;\nimport\u00a0android.content.Intent;\nimport\u00a0android.graphics.Bitmap;\nimport\u00a0android.os.Bundle;\nimport\u00a0android.provider.MediaStore;\nimport\u00a0android.view.View;\nimport\u00a0android.view.View.OnClickListener;\nimport\u00a0android.widget.ImageView;\n\n\n\/**\n\u00a0*\u00a0@author\u00a0frankiewei.\n\u00a0*\u00a0\u89e3\u51b3\u56fe\u7247\u666e\u901aOOM\u7684Demo.\n\u00a0*\/\npublic\u00a0class\u00a0ImageCacheDemoActivity\u00a0extends\u00a0Activity\u00a0{\n\n\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u663e\u793a\u56fe\u7247\u7684ImageView.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0private\u00a0ImageView\u00a0mImageView;\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u6253\u5f00\u672c\u5730\u76f8\u518c\u7684requestcode.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public\u00a0static\u00a0final\u00a0int\u00a0OPEN_PHOTO_REQUESTCODE\u00a0=\u00a0\u00a00x1;\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u56fe\u7247\u7684target\u5927\u5c0f.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0private\u00a0static\u00a0final\u00a0int\u00a0target\u00a0=\u00a0400;\n\n\n\n\n\u00a0\u00a0\u00a0\u00a0@Override\n\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0onCreate(Bundle\u00a0savedInstanceState)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.onCreate(savedInstanceState);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0setContentView(R.layout.main);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0setupViews();\n\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0private\u00a0void\u00a0setupViews(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mImageView\u00a0=\u00a0(ImageView)findViewById(R.id.imageview);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mImageView.setOnClickListener(new\u00a0OnClickListener()\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0public\u00a0void\u00a0onClick(View\u00a0v)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0openPhotos();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u6253\u5f00\u672c\u5730\u76f8\u518c.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0private\u00a0void\u00a0openPhotos()\u00a0{\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Intent\u00a0intent\u00a0=\u00a0new\u00a0Intent(Intent.ACTION_PICK,\u00a0null);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"image\/*\");\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0startActivityForResult(intent,\u00a0OPEN_PHOTO_REQUESTCODE);\n\n\n\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0@Override\n\u00a0\u00a0\u00a0\u00a0protected\u00a0void\u00a0onActivityResult(int\u00a0requestCode,\u00a0int\u00a0resultCode,\u00a0Intent\u00a0data)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0switch\u00a0(requestCode)\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0case\u00a0OPEN_PHOTO_REQUESTCODE:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(resultCode\u00a0==\u00a0RESULT_OK){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u5982\u679c\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff0cOptions\u4e3anull\u65f6\u5019\uff0c\u5c31\u662f\u9ed8\u8ba4decode\u4f1a\u51fa\u73b0oom\u54e6.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Bitmap\u00a0bm\u00a0=\u00a0ImageCacheUtil.decode(null,\u00a0null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ImageCacheDemoActivity.this,\u00a0data.getData(),\u00a0null);\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u8fd9\u91cc\u8c03\u7528\u8fd9\u4e2a\u65b9\u6cd5\u5c31\u4e0d\u4f1aoom.\u5c4c\u4e1d\u4eec\u5c31\u7528\u8fd9\u4e2a\u65b9\u6cd5\u5427.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Bitmap\u00a0bm\u00a0=\u00a0ImageCacheUtil.getResizedBitmap(null,\u00a0null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ImageCacheDemoActivity.this,\u00a0data.getData(),\u00a0target,\u00a0false);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mImageView.setImageBitmap(bm);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0default:\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0super.onActivityResult(requestCode,\u00a0resultCode,\u00a0data);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/pre>\n\n\n\n<p>\u5176\u4e2dmain.xml\u5e03\u5c40\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml\u00a0version=\"1.0\"\u00a0encoding=\"utf-8\"?>\n&lt;LinearLayout\u00a0xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n\u00a0\u00a0\u00a0\u00a0android:layout_width=\"fill_parent\"\n\u00a0\u00a0\u00a0\u00a0android:layout_height=\"fill_parent\"\n\u00a0\u00a0\u00a0\u00a0android:orientation=\"vertical\"\u00a0>\n\n\n\u00a0\u00a0\u00a0\u00a0&lt;TextView\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:layout_width=\"fill_parent\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:layout_height=\"wrap_content\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:text=\"@string\/hello\"\u00a0\/>\n\n\n\u00a0\u00a0\u00a0\u00a0&lt;ImageView\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:id=\"@+id\/imageview\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:layout_width=\"400px\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:layout_height=\"400px\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0android:src=\"@drawable\/ic_launcher\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/>\n\n\n&lt;\/LinearLayout><\/pre>\n\n\n\n<p>\u4ece\u672c\u5730\u76f8\u518c\u9009\u62e9\u663e\u793a\u3002\u7528\u4e86getRsizedBitmap()\u65b9\u6cd5\uff0c\u56fe\u7247\u5f88\u5927\u4e0d\u4f1aoom.<\/p>\n\n\n\n<p>\u8fd0\u7528\u9ed8\u8ba4\u7684decode\u65b9\u6cd5\u5c31\u4f1aoom\u3002<\/p>\n\n\n\n<p>OK\uff0c\u4eca\u5929\u5c31\u8bb2\u5230\u8fd9\u91cc\uff0c\u5927\u5bb6\u6709\u4ec0\u4e48\u7591\u95ee\u7684\uff0c\u53ef\u4ee5\u7559\u8a00\uff0c\u8c22\u8c22\u5927\u5bb6\uff01\uff01\uff01<\/p>\n\n\n\n<p><a href=\"http:\/\/download.csdn.net\/download\/android_tutor\/4674865\"><strong>\u6e90\u4ee3\u7801\u70b9\u51fb\u8fdb\u5165==&gt;<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5927\u5bb6\u597d\uff0c\u4eca\u5929\u7ed9\u5927\u5bb6\u5206\u4eab\u7684\u662f\u89e3\u51b3\u89e3\u6790\u56fe\u7247\u7684\u51fa\u73b0oom\u7684\u95ee\u9898\uff0c\u6211\u4eec\u53ef\u4ee5\u7528BitmapFactory\u8fd9\u91cc\u7684\u5404\u79cdDecode\u65b9\u6cd5\uff0c\u5982\u679c\u56fe\u7247\u5f88\u5c0f\u7684\u8bdd\uff0c\u4e0d\u4f1a\u51fa\u73b0oom,\u4f46\u662f\u5f53\u56fe\u7247\u5f88\u5927\u7684\u65f6\u5019 \u5c31\u8981\u7528BitmapFactory.Options\u8fd9\u4e2a\u4e1c\u4e1c\u4e86,Options\u91cc\u4e3b\u8981\u6709\u4e24\u4e2a\u53c2\u6570\u6bd4\u8f83\u91cd\u8981. \u6211\u4eec\u53bb\u89e3\u6790\u4e00\u4e2a\u56fe\u7247\uff0c\u5982\u679c\u592a\u5927\uff0c\u5c31\u4f1aOOM\uff0c\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6e\u538b\u7f29\u6bd4\u4f8binSampleSize,\u4f46\u662f\u8fd9\u4e2a\u538b\u7f29\u6bd4\u4f8b\u8bbe\u7f6e\u591a\u5c11\u5c31\u662f\u4e2a\u95ee\u9898\uff0c\u6240\u4ee5\u6211\u4eec\u89e3\u6790\u56fe\u7247\u53ef\u4ee5\u5206\u4e3a\u4fe9\u4e2a\u6b65\u9aa4\uff0c\u7b2c\u4e00\u6b65\u5c31\u662f\u83b7\u53d6\u56fe\u7247\u7684\u5bbd\u9ad8\uff0c\u8fd9\u91cc\u8981\u8bbe\u7f6eOptions.inJustDecodeBounds=true,\u8fd9\u65f6\u5019decode\u7684bitmap\u4e3anull,\u53ea\u662f\u628a\u56fe\u7247\u7684\u5bbd\u9ad8\u653e\u5728Options\u91cc\uff0c\u7136\u540e\u7b2c\u4e8c\u6b65\u5c31\u662f\u8bbe\u7f6e\u5408\u9002\u7684\u538b\u7f29\u6bd4\u4f8binSampleSize\uff0c\u8fd9\u65f6\u5019\u83b7\u5f97\u5408\u9002\u7684Bitmap.\u8fd9\u91cc\u6211\u753b\u4e86\u7b80\u5355\u7684\u6d41\u7a0b\u56fe\uff0c\u5982\u4e0b\uff1a<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/posts\/766"}],"collection":[{"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=766"}],"version-history":[{"count":4,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/posts\/766\/revisions"}],"predecessor-version":[{"id":1790,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=\/wp\/v2\/posts\/766\/revisions\/1790"}],"wp:attachment":[{"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.xiunian.wang\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}