следующий лист представляет рабочий поток в приложении, о котором идет речь.
Я столкнулся с проблемами с ошибками OutOfMemory, в основном потому, что пользователи могли переключаться с активности B на активность D несколько раз (они показывают различный контент для каждой попытки), без уничтожения предыдущей активности. Это привело к очень большой загрузке, что привело к ошибке OutOfMemory.
Чтобы этого избежать, я выполнил рекомендацию о добавлении родительских активностей в манифест и создания новых столов с классом TaskStackBuilder:
void openDFromB()
{
Intent i = new Intent(this, ActivityD.class);
TaskStackBuilder.create(this)
.addParentStack(ActivityD.class)
.addNextIntent(i)
.startActivities();
}
Если теперь пользователь переключается с действия B на D, MainMenu, A и B уничтожаются и создается новый Backstack (MainMenu, C, D). Это решает проблемы с памятью для уровня api более 10, но, к сожалению, TaskStackBuilder не создает блокировки для устройств pre api 11.
Любая идея, что делать, чтобы избегать пользователей, укладывающих бесконечное количество операций до api 11? Возможно ли это, или я должен попытаться освободить как можно больше ресурсов в onPause, чтобы получить максимальное количество накопленных действий до OoM?
заблаговременно!