Я записал тот MapActivity
класс, который может отобразить ряд мест, а также единственных мест. На запуске приложение создает экземпляр этого MapActivity
и дисплеи несколько мест. Если пользователь нажимает на определенное место, то новое Activity
запускается, который показывает детали выбранного места. Это действие имеет пункт меню, который позволяет пользователю просматривать место на карте - это вызывает это новый экземпляр MapActivity
создается, за исключением того, что теперь только это единственное место отображено.
Проблема теперь - это, если пользователь перешел назад к первому MapActivity
(тот, который показывает несколько мест) мозаики не будут загружаться больше + иногда, с OutOfMemoryErrors встречаются.
Согласно Android JavaDocs, только возможно иметь то MapActivity
для каждого процесса. Однако я не хочу определять мой MapActivity
как singleInstance/singleTask, так как пользователь должен всегда мочь перейти назад к первому MapActivity, который показывает несколько мест.
Я видел, что приложение Google Places (который шел с Google Map 4.4) для Android использует несколько MapActivity
экземпляры. Как это возможно? И как я могу достигнуть его в своем приложении?
Согласно JavaDocs Android, это можно иметь только одну MapActivity на класс
Это не один вид карты на класс, это на процесс.
Известно, что при использовании нескольких представлений карт в одном процессе могут возникнуть некоторые проблемы. Обычно так и происходит (ваше приложение работает в одном процессе), если вы не настроили ничего конкретного. Однако вы можете использовать атрибут android:process в манифесте для назначения вашим действиям:
<activity android:name=".activity.directory.MapView1" android:process=":MapView1">
<activity android:name=".activity.directory.MapView2" android:process=":MapView2">
Таким образом, действия выполняются в отдельных процессах, что хорошо работает, если вы не используете общих статических переменных для разных действий.
Также смотрите обсуждение ошибки в багтрекере android: