Android создает новый экземпляр приложения - PullRequest
1 голос
/ 15 апреля 2011

У меня есть приложение с количеством мероприятий.Свой класс Application используется для хранения глобальных данных, поэтому любой вид деятельности может получить его.Проблема в том, что когда я тяжело иду по действиям (особенно по действиям, которые создают много растровых изображений), система создает новый экземпляр класса Application с неверными глобальными данными.

Вопрос в том, почему это происходит?)

Я считаю, что есть несколько простых объяснений такого поведения.

1 Ответ

2 голосов
/ 15 апреля 2011

Вы должны указать атрибут android:launchMode внутри тега activity в androidManifest.xml, чтобы соответствовать вашим потребностям, например:

<activity android:launchMode="singleTask" [...]>
    [...]
</activity>

Вы можете узнать больше об этом: android: launchMode = ["несколько" | "singleTop" | "singleTask" | "SingleInstance"]

"singleTask" и "singleInstance" деятельность может только начать задачу. Oни всегда в корне деятельности стек. Кроме того, устройство может держать только один экземпляр деятельности на время - только одна такая задача.

"singleTask" и "singleInstance" режимы отличаются друг от друга только одно уважение: деятельность "SingleTask" позволяет другим видам деятельности быть частью его задача. Это всегда в корне его задача, но другие виды деятельности (обязательно "стандарт" и "singleTop" деятельность) может быть запустил в эту задачу. "singleInstance" активность, на С другой стороны, не позволяет никаких других деятельность должна быть частью его задачи. Это единственное занятие в задании. Если это начинает другую деятельность, которая активность назначена другому задание - как будто FLAG_ACTIVITY_NEW_TASK был в намерении.

Таким образом, вы можете быть уверены, что у вас будет запущен только один экземпляр вашей активности.

...