У меня есть Galaxy Nexus, и я знаю, что опция манифеста android:largeHeap="true"
работает на этом телефоне, но мне было интересно, работает ли он на старых телефонах, которые обновляются до Ice Cream Sandwich, то есть на Samsung NexusS.
Причина, по которой я спрашиваю, состоит в том, что я создал приложение, которое интенсивно использует большие растровые изображения, и изначально оно было разработано для планшетов с размером кучи 48 МБ.Galaxy Nexus также имеет 48 МБ доступного размера кучи для каждого приложения, поэтому мое приложение прекрасно работает на этом телефоне, несмотря на то, что он не планшет.
Проблема в том, что Nexus S имеет только 32 МБ кучидоступно, поэтому мне действительно нужна опция большой кучи, чтобы приложение работало на этих старых телефонах с ICS.
Мой вопрос: Увеличивает ли опция android:largeHeap
доступную память кучи?Т.е. если у Nexus S по умолчанию 32 МБ, я смогу получить доступ к perhap 64 МБ, доступным с помощью этого?
Для тех из вас, кто не знаком с этой опцией, она увеличивает объем доступной кучипамять для вашего приложения за счет снижения производительности.Его следует использовать только в том случае, если другой альтернативы нет.
Обновление
Вот пакет приложения, показывающий доступный размер кучи: http://michellbak.dk/TestHeapSize.apk
Исходный код ниже, чтобы показать вам, что нет ничего вредного:
package com.miz.heapsize;
import android.app.Activity;
import android.app.ActivityManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActivityManager am = ((ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE));
int memory = am.getMemoryClass();
int largeMemory = am.getLargeMemoryClass();
text = (TextView) findViewById(R.id.textView1);
text.setText("Normal heap size: " + memory + "\nLarge heap size: " + largeMemory);
}
}
Файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.miz.heapsize"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="11" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true" >
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>