Использование памяти Android - PullRequest
0 голосов
/ 24 февраля 2012

Я создаю приложение для Android, но у меня есть несколько вопросов по поводу использования памяти .

Большинство данных, которые мне нужны и используются, - это строковые массивы, хранящиеся в файле XML-строк.Я использовал массивы, потому что, во-первых, в самом большом массиве будет до 30 элементов, а во-вторых, не будет никакого обновления, удаления или вставки элементов через приложение.Все созданные мной пользовательские адаптеры следуют указаниям googles (быстрый способ - использование класса держателя)

Когда пользователь переключается между действиями, в зависимости от выбора, который он делает, различные массивы загружаются в представления списка.

Очищает ли android память, выделяемую каждым массивом, если он не используется?я должен сделать это?Я также использовал MAT, чтобы проверить, как приложение использует память, проверить утечки и т. Д., И я уверен, что все в порядке.Я также использую несколько иконок / изображений PNG.При запуске приложение получает 5 МБ, увеличивается и уменьшается до 8,5-9 МБ, когда пользователь играет.

Заранее благодарен за любую помощь!

1 Ответ

1 голос
/ 24 февраля 2012

Возможно, ОС Android убьет ваши действия (без фокуса) в стеке, если потребуется память. Когда ваша активность уничтожается таким образом, вызывается onSaveInstanceState(Bundle outState). Вы должны сохранить свой строковый массив здесь.

Когда в вашей Activity вызывается onCreate(Bundle savedInstanceState), если saveInstanceState не равно NULL, то это означает, что ваша Activity ранее была убита ОС, и вам необходимо повторно заполнить строковый массив из этого пакета.

например:

String [] stringArray;
...

protected void onCreate(Bundle savedInstanceState)
{
    if (savedInstanceState != null)
    {
        stringArray = savedInstanceState.getStringArray("some_key");
    }
}

protected void onSaveInstanceState (Bundle outState)
{
    super.onSaveInstanceState(outState);
    outState.putStringArray("some_key", stringArray);
}

Более подробно это описано здесь: http://developer.android.com/reference/android/app/Activity.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...