androidアプリ開発 OutOfMemory

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
zarame

androidアプリ開発 OutOfMemory

#1

投稿記事 by zarame » 12年前

初めまして、androidアプリを今回初めて作成している者です。

私は今「android対応 マスコットアプリ プログラミング」という本を見ながらアプリを作成しています。
この書籍の中にある キャラクターの表示 という項目までは何とかたどり着けたのですが、キャラクター表示のためのプログラムを記入し、いざ実際エミュレーターで実行してみるとLogCatに「java.long.OUtOfMemoryError: bitmap size exceeds VM budget」やその他のエラーが表示され強制終了されます。


以下プログラムです↓
............................................................
package my.name;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;

public class Bit2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(new BitmapView(this));
}

class BitmapView extends View {

Bitmap bitmap[] =new Bitmap[3];

public BitmapView(Context c) {

super(c);

Resources r=c. getResources();

bitmap[0]=BitmapFactory.decodeResource(
r, R.drawable.画像ファイル1);
bitmap[1]=BitmapFactory.decodeResource(
r, R.drawable.画像ファイル2);
bitmap[2]=BitmapFactory.decodeResource(
r, R.drawable.画像ファイル3);
}
@Override
protected void onDraw(Canvas c) {

c.drawColor(Color.WHITE);

Paint p=new Paint();

for (int i=0; i<bitmap.length; i++) {
c.drawBitmap(bitmap, (
c.getWidth() -bitmap.getWidth())/2, 0, p);
}
}
}
}
....................................................

書籍にある通り、画像サイズは1200 x 1600 の透過PNGです。
調べてみると画像サイズが大きいのはわかったのですが、どのように対処するべきかわかりませんでした…。

このプログラムの中で画像サイズを小さくするにはどのように記述すればよいでしょうか?
ご指導いただけると幸いです。

長文になりましたがよろしくお願いします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: androidアプリ開発 OutOfMemory

#2

投稿記事 by みけCAT » 12年前

プログラムの中で画像サイズを小さくするのは、あまり意味がないのではないでしょうか?
GIMPなどの画像編集ソフトで、事前にリサイズしてみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: androidアプリ開発 OutOfMemory

#3

投稿記事 by bitter_fox » 12年前

http://vacaposi.blogspot.jp/2011/09/09- ... e2168.html
が参考になると思います。

あとは、メモリリークが起きていないかの確認もするとよいと思います。

zarame

Re: androidアプリ開発 OutOfMemory

#4

投稿記事 by zarame » 12年前

返信が遅くなってしまい、申し訳ないです。

ご回答くださり、ありがとうございました!
お二人から頂いたご意見を参考に再度とりかかっていきたいと思います。

また質問させていただくかと思いますが、ご縁がありましたらぜひともよろしくお願いします^^*

はらぺこ

Re: androidアプリ開発 OutOfMemory

#5

投稿記事 by はらぺこ » 12年前

私も現在この書籍を使って勉強しています。
特にエミュレーターでのOOMが多いです。
このプログラムは第五章のものだと思いますが、
第六章に入ってからはいよいよ実機でもOOMが起こるようになりました。

プログラム上で小さくしても駄目みたいでした。
上記のプログラムではアプリ起動時に取得しているらしいので、エラーが起きやすいようです。
第五章の三番目のプログラムはプログラム呼び出し時に画像を取得するので、
まだエラーが起きにくいようです。(横にしたときとか)

メモリアナライザを使ってみてもそこまでメモリを使っているようには見えません。
Androidってこんなものなのかなぁと思ったりもしてます。

私のほうでも調査してみますが、
何か分かったらご連絡ください。

http://harapeko.wktk.so/
http://android.wktk.so/

nanashi777

Re: androidアプリ開発 OutOfMemory

#6

投稿記事 by nanashi777 » 12年前

AVDのターゲットを4系にしてみたらどうでしょうか?

閉鎖

“C言語何でも質問掲示板” へ戻る