android asynctask извлича след повторно въвеждане на дейност

Искам да създам „интелигентен инструмент за изтегляне“, който може да изтегля изображения във фонов режим (използвайки AsyncTask). Има две дейности, A и B. В дейност A мога да избера списъка с изображения, който искам да видя (първо изтегляне, ако не съм изтеглял веднъж). След това въведете дейност B, тук стартирам асинхронна задача за изтегляне на изображението във фонов режим и в нишката на потребителския интерфейс, показвам изображението на потребителя.

има голям списък, чието изтегляне може да отнеме минути. Един сложен проблем е, когато asynctask все още изтегля списъка, потребителят може да излезе от дейност B (да се върне към дейност A. (Знам, че asynctask ще продължи да работи дори ако дейност B е унищожена). Но ако в този момент потребителят избере друг списък за преглед (след това въведете дейност Б). Искам да спра предишната задача за известно време, започнах да изтеглям първо новия списък, а след това стария списък. Моите мисли да направя това е да извлека предишната асинхронна задача и да променя изтеглянето ред. Но не знам как да извлека asynctask, претърсих някои въпроси относно повторното създаване на asynctask, но всички те са за след повторно конфигуриране (като завъртане на екрана). Има ли начин да извлека фоново работещата asynctask, след като унищожа дейността и я създам отново.

Благодаря!


person user2548556    schedule 26.07.2013    source източник


Отговори (1)


След като унищожите дейност, AsyncTask изчезва. Поради тази причина AsyncTasks не са оптималното решение, ако искате да избегнете стартирането на фоновата операция от нулата.

Мисля, че трябва да структурирате приложението си, за да изтегляте изображения с помощта на IntentService. В дейност A изберете списъка с изображения. След като бъде избран, стартирайте IntentService, за да изтеглите изображенията. След като IntentService приключи, той може да уведоми потребителя, че операцията е завършена, или да изпрати локално излъчено съобщение обратно към дейността. И в двата случая, дори ако потребителят се е отдалечил от дейността, работата не е изчезнала. Ако дейността е била унищожена, можете да разберете дали изтеглянето е извършено и ако е така, покажете изображенията. Ако не е направено, можете да поставите индикатор за активност.

person Joe Malin    schedule 26.07.2013