質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

Q&A

1回答

1544閲覧

メモリの使い方について

haruk

総合スコア12

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

0グッド

0クリップ

投稿2015/10/14 09:06

編集2015/10/14 09:07

100px*100pxの画像を120枚ほど表示させ、それから個々のアクティビティに遷移するようなアプリをつくっているのですが、
エミュレータで起動中アプリを強制終了させられてしまいます。
メモリの使用率を見ると120枚のアクティビティをひらいているときは62/64MBほどになっているので、
メモリ不足が原因かと思われます。
その後画像を30枚ほどにしてやってみると、問題なく起動できました。
しかし、googleplayなどでアプリをみると同時に100枚ほど表示させているアプリ(大きさもそれほど変わらず、グリッドビューをつかっていました)もありました。なにか方法などあれば教えてほしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

普通に考えて「1度に100枚の写真を同時に画面上に表示する」ということは現実的ではないので,
スクロールなどの手段で100枚の写真を表示させていると仮定します.
この場合,メモリには画面に表示させるべき画像のみを読み込む,という手法が考えられます.
この場合ListAdapterでconvertViewを使いまわしているので,convertViewに以前入っていた画像はどこからも参照されなくなり,ガベージコレクタの対象になります.
結果,メモリ上にガベージコレクタされずに残る写真の枚数は,画面上に表示出来るだけの分だけということになり,全体で表示させるべき写真が何枚になろうともメモリ不足にはなりにくいです.

投稿2015/10/14 09:23

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haruk

2015/10/14 12:09

@Override public View getView(int position, View convertView, ViewGroup parent) { // 特定の行(position)のデータを得る ListView_Champ item = (ListView_Champ)getItem(position); // convertViewは使い回しされている可能性があるのでnullの時だけ新しく作る if (null == convertView) { convertView = layoutInflater_.inflate(R.layout.listview, null); } // CustomDataのデータをViewの各Widgetにセットする ImageView imageView; imageView = (ImageView)convertView.findViewById(R.id.image); imageView.setImageBitmap(item.getImageData()); TextView textView; textView = (TextView)convertView.findViewById(R.id.text); textView.setText(item.getTextData()); return convertView; } これではだめということでしょうか?
swordone

2015/10/14 16:15

ListView_Champとはどのようなクラスなのでしょう?
haruk

2015/10/15 08:09

ListView_Champ.java package com.***.myapplication; import android.graphics.Bitmap; public class ListView_Champ { private Bitmap imageData_; private String textData_; public void setImageData(Bitmap image) { imageData_ = image; } public Bitmap getImageData() { return imageData_; } public void setTextData(String text) { textData_ = text; } public String getTextData() { return textData_; } } こんな感じで、listviewの1つの要素の中身を決めている感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問