Andorid

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

More than 1 year has passed since last update.


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


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

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