androidに大きな画像を載せるには注意が必要です。


setImageBitmapまたはsetImageResourceまたはBitmapFactory.decodeResourceを使用しないでください。これらの関数はdecodeを完成した後、最終的にはjava層のcreateBitmapによって完成されます。メモリをもっと消費する必要があります。そこで、Bitmap Factory.decodestream法により、bitmapを作成し、ImageViewとします。 source、decodestreamの最大の秘密は、JNI>>native DecodeAsssetを直接呼び出してdecodeを完成させることにあります。java層のcreateBitmapを使う必要がなく、java層の空間を節約します。読み込む時に写真のConfigパラメータを加えると、ロードメモリを効果的に減らすことができます。 保存先 メモリ異常に加えて、decodestreamが直接持っている写真でバイトコードを読みました。 マシンの様々な解像度に応じて自動的に適応しません。 decodestreamを使用した後、hdpiとmdpi、ldpiに対応するピクチャリソースを配置する必要があります。 違う解像度のマシンで同じ大きさ(ピクセル数)で表示されるサイズが違います。
 
また、以下の方法も大いに役立つ。 InputStream is = this.get Resource().openRawResource(R.drawable.pic 1)     Bitmap Factory.Options options=new Bitmap Factory.Options()     options.inJust DecodeBounds = false;     options.insampleSize = 10;   //width、hightは元の10分の1に設定します。     Bitmap btp =Bitmap Factory.decodestream(is,null,options)2. if(!bmp.isRecycle() ){         bmp.recycle()   //画像のメモリを回収します。         system.gc()  //リマインダシステムを直ちに回収します。以下は前の方法を送ります。Javaコードです。   1. /**   2.  * ローカルリソースの画像を最省メモリで読み込みます。   3.  * @パラム context   4.  * @パラム レスリング   5.  * @return   6.  */     7. public static Bitmap readBitMap(Conttext) context 要点 レスリング     8.     Bitmap Factory.Options opt = new Bitmap Factory.Options()     9.     opt.inPreferredConfig = Bitmap.C.onfig.RGBu565;     10.     opt.inPurgeot = true;    11.     opt.inInput Sharable = true;    12.        //リソース画像を取得    13.     InputStream is = context.get Resource().openRawResource(resid);    14.         return Bitmap Factory.decodeStream(is,null,opt);    15. }================================================================================Androidメモリのオーバーフローの解決方法は以下の通りになります。http://www.cppblog.com/iuranus/archive/2010/11/15/124394.html?opt=admin昨日はギャラリーに画像を入れた時、java.lang.OutOfMemory Errorが現れました。 bitmap size exceeds VM budget 画像サイズがRAMメモリを超えています。      シミュレータRAMは小さいです。8 Mのメモリしかありません。大量の画像を入れると(各100 Kぐらい)上の理由があります。各画像は前に圧縮されていたので、Bitmapに入れるとサイズが大きくなり、RAMメモリを超えてしまいます。具体的な解決方法は以下の通りです。 メモリオーバーフローの問題                    //Options 画像サイズのみを保存し、メモリに画像を保存しません。                Bitmap Factory.Options opts = new Bitmap Factory.Options()                //スケーリングの比率、スケーリングは準備された比率でスケーリングするのが難しいです。その値はスケーリングの倍数を示しています。SDKでは、その値は2の指数値であることを勧めています。値が大きいほど、画像がよく見えなくなります。                opts.inSampleSize = 4;                Bitmap bmp = null                bmp = Bitmap Factory.decodeResource(getsResource() mImageIds[position],opts;                                             ...                             //回収する                bmp.recycle();上記の方法で解決しましたが、これは最も完璧な解決方法ではありません。いくつかの理解を通じて、Dalvik仮想マシンのヒープメモリ割り当てを最適化することはAndroidプラットフォームにとって、そのホスト層が使用するDalvikです。 Java VMは現在の表現から見れば、大規模なゲームや資源消費のアプリケーションを開発する際に、マニュアル干渉GC処理を考慮して、使用することができます。 dalvik.system.VMuntime類が提供するsetTarget Heapplization方法はプログラムスタックメモリの処理効率を高めることができます。もちろん、具体的な原理はオープンソースプロジェクトを参照してもいいです。ここでは使用方法を説明します。   prvate final static float TARGET HUHEAPH-UTILIZATION = 0.75 f プログラムオンクリアー時に呼び出すことができます。 VMRuntime.getRuntime..set Target HeappUtilization; はい、Androidメモリも自分でサイズを定義できます。    いくつかのAndroidプロジェクトについては、パフォーマンスのボトルネックに影響を与えるのは主にAndroid自身のメモリ管理システムの問題であり、携帯電話メーカーはRAMに対してけちであり、ソフトウェアの流暢性にとってRAMの性能に対する影響は非常に敏感である。 Dalvik仮想マシンのメモリ割り当てを最適化する以外に、自分のソフトウェアのメモリサイズを強制的に定義することもできます。私たちはDalvikを使って提供します。 dalvik.system.VMuntime類は最小ヒープメモリを設定します。例:prvate final static 要点 CWJuHEAP SIZE = 6* 1024* 1024 ;VMRuntime.getRuntime().set MinimHeappSize(CWJuHEAPH HuSIZE); //最小のheapメモリを6 MBサイズに設定します。もちろんメモリのピンチにはマニュアル干渉GCでbitmapを処理することもできます。 画像のサイズを設定します。避けるようにしてください。 メモリオーバーフロー OutOfMemoryErrorの最適化方法★android 中用ビットマップ メモリが溢れやすくなります。以下のエラーを報告します。Java.lang.OutOfMemoryError : bitmap size exceeds VM budget● 主にこの段を加えます。BitmapFactory.Options options = new Bitmap Factory.Options()                options.insampleSize = 2;● eg 1:(Uriで写真を取る)prvate ImageView preview;BitmapFactory.Options options = new Bitmap Factory.Options()                    options.insampleSize = 2;//写真の幅の高さは全部もとの二分の一で、つまり写真はもとの四分の一です。                    Bitmap bitmap = Bitmap Factory.decodestream(cr)                            .openInputStream(uri) null options;                    preview.setImageBitmap;上記のコードはメモリオーバーフローを最適化できますが、画像サイズを変更するだけで、メモリオーバーを完全に解決することはできません。 eg 2:(パスで画像に行く)prvate ImageView preview;prvate String fileName= 「/sdcard/DCIM/Camera/2010-05-14 16.01.4.jpg";Bitmap Factory.Options options = new Bitmap Factory.Options()                options.insampleSize = 2;//写真の幅の高さは全部もとの二分の一で、つまり写真はもとの四分の一です。                        Bitmap b = Bitmap Factory.decodefile(fileName) options;                        preview.setImageBitmap(b)                        filePath.set Text(fileName);Android いくつかの性能最適化の方法があります。●  まずメモリについては、参照できます。 Androidスタックのメモリも自分でサイズを定義できます。 和 Dalvik仮想マシンのメモリ割り当てを最適化する●  基本タイプはJavaには実際のポインタがないので、敏感な演算ではNDKを使って完成します。Android d 123はゲーム開発者にヒントを与えます。これが面白いのはGoogleです。 ニンテンドーDSの発売は、OpenGLなどのゲーム開発者を支援する可能性があります。 ESのサポートには明確な変更があり、ローカルコードの操作パターンインターフェースが必要です。  グラフィカルオブジェクトの最適化は、ここでAndroid上のBitmapオブジェクトの廃棄ということであり、recycle()の方法によってGCにBitmapオブジェクトを回収させることができることを示しています。通常は不要なBitmapに対して、if(bitmapObject.isRecycled)=false)のような方法が使えます。 //回収してないなら           bitmapObject.recycle()   ●  現在のシステムはアニメに対して弱いので、従来のアプリケーションの補間移行効果は大丈夫ですが、ゲームにとっては一般的な美工はGIF方式の統一処理に慣れているかもしれません。現在はAndroidシステムはGIFの第一フレームのみをプレビューできます。J 2 MEでスレッドと自己写解像器を介してGIF 89形式のリソースを読み取ることができます。 多くのAndroid携帯にはあまり物理的なボタンがないので、ジェスチャーで識別するためには想像が必要かもしれません。 Gesture Detector 重力センサーと操作を実現します。通常は誤操作の問題を考慮したノイズ低減処理が必要です。Androidスタックのメモリも自分でサイズを定義できます。   いくつかの大規模なAndroidプロジェクトやゲームについては、アルゴリズム処理に問題がないほか、性能のボトルネックに影響を与えるのは主にAndroid自身のメモリ管理システムの問題であり、携帯電話メーカーはRAMに対してけちであり、ソフトウェアの流暢性にとって、RAMの性能に対する影響は非常に敏感であり、前回Android開発網で述べた最適化されたDalvik仮想マシンのメモリ割り当てを除いて、私達は自分のソフトウェアのメモリサイズを強制的に定義することもできます。私たちはDalvikを使って提供します。 dalvik.system.VMuntime類は最小ヒープメモリを設定します。例:prvate final static 要点 CWJuHEAP SIZE = 6* 1024* 1024 ;VMRuntime.getRuntime().set MinimHeappSize(CWJuHEAPH HuSIZE); //最小のheapメモリを6 MBサイズに設定します。メモリの容量がきつい場合は手動でGCに干渉して処理することもできます。次回は具体的なアプリケーションについて説明します。Dalvik仮想マシンのメモリの割り当てを最適化します。Androidプラットフォームにとっては、そのホスト層が使用するDalvikです。 JavaVMは現在の表現から見れば、大規模なゲームを開発したり、資源を消耗したりする応用の中で、手動干渉GC処理を考慮して、使用することができます。 dalvik.system.VMuntime類が提供するsetTarget Heapplization方法はプログラムスタックメモリの処理効率を高めることができます。もちろん、具体的な原理はオープンソースプロジェクトを参照してもいいです。ここでは使用方法を説明します。   prvate final static float RGET(UHEAPUUTILIZATION) = 0.75 f プログラムオンクリアー時に呼び出すことができます。 VMRuntime.getRuntime..set Target HeappUtilization; いいです
 
		BitmapFactory.Options opt = new BitmapFactory.Options();
		opt.inPreferredConfig = Bitmap.Config.RGB_565;
		opt.inPurgeable = true;
		opt.inInputShareable = true;
 
 
書き記す
 
<アプリアプリ
android:largheap=「true」