LoginSignup
2
0

More than 5 years have passed since last update.

Android - LinerLayoutで表示する時とListViewを使う時のメモリー比較

Last updated at Posted at 2017-01-21

LinerLayoutで表示する時とListViewを使う時のメモリー比較

①LinerLayoutで表示す場合

activity_number.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.miwok.NumberActivity">
</LinearLayout>
NumberActivity.java
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_number);

        ArrayList<String> words = new ArrayList<String>();
        for(int i=0; i < 10000; i++) {
            words.add(i, "テスト");
        }
   }

実行前のメモリー

beforeLinear.PNG

実行後のメモリー

10000件の文字列を全部LinearLayoutに表示したので13M程度メモリーが増えました
afterLinear.png

②ListViewとArrayListで表示する場合

activity_number.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.miwok.NumberActivity"/>
NumberActivity.java
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_number);

     ArrayList<String> words = new ArrayList<String>();

        LinearLayout liner = (LinearLayout) findViewById(R.id.rootView);
        for(int i=0; i < 10000; i++) {
            words.add(i, "テスト");
        }


        ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, words);

        ListView listView = (ListView) findViewById(R.id.list);

        listView.setAdapter(itemsAdapter);
   }

実行前のメモリー

list_before.PNG

実行後のメモリー

同じデータを表示してもメモリー再利用しているのでほとんどメモリー使わない
list_after.PNG

見た目は同じだけどメモリー使い方がこんなに違います。

メモリー考えながら開発しましょう!!!!!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0