ПредишенСледващото

основните класове

Проби Свързани код

Товарачи, които се появиха в Android 3.0, опростяват асинхронен режим на зареждане на данни или фрагмент. Товарачи имат следните свойства:

  • Те са на разположение за всяка дейност и фрагменти операции фрагмент.
  • Те осигуряват асинхронно зареждане на данните.
  • Те проследяват източника на данните си и да произвежда нови резултати, когато съдържанието е променен.
  • Те се свърже отново автоматично до последния курсора товарач възстановя след промяна в конфигурацията. По този начин, те не трябва отново да задава въпроси на данните.

Резюме на API интерфейс буутлоудъра

Има редица от класове и интерфейси, които могат да бъдат използвани в товарачи за кандидатстване. Те са показани в тази таблица:

Абстрактен клас, да се свърже с дейността или фрагмент, за да се контролира една или повече Loader интерфейс. Това му позволява да изпълнява операции за управление на по-дълъг живот, заедно с активност или Фрагмент цикъл; -голямата част от този клас се използва за CursorLoader. но приложението може да пишат свои обувка товарачи за работа с други видове данни.

Има само един клас LoaderManager за операция или фрагмент. Въпреки LoaderManager клас може да бъде няколко програми за изтегляне.

обаждане интерфейс осигурява взаимодействие с клиента LoaderManager на. Например, по метода на обаждане onCreateLoader () създава нова товарач.

Абстрактен клас, който изпълнява асинхронно зареждане на данните. Това е базов клас за зареждане. Обикновено се използва CursorLoader. но тя може да се прилага и собствен подклас. Когато хранилките са активни, те трябва да се проследи източникът на данните и да осигури нови резултати за се променя съдържанието.

Резюме товарач, който осигурява AsyncTask да си свършат работата.

Подклас AsyncTaskLoader. че исканията и се връща ContentResolver курсора. Този клас реализира Loader стандартен протокол начин да се направи запитване до курсора. Тя се основава на AsyncTaskLoader да направи искане до курсора във фонов конец, за да не се блокира потребителски интерфейс на приложението. С помощта на тази товарач - това е най-добрият начин да заредите асинхронно данни от ContentProvider вместо успя искане изпълнение чрез платформата на операция или API интерфейси.

В тази таблица класове и интерфейси са най-важните компоненти, чрез които буутлоудъра се изпълняват в заявлението. При създаването на всеки товарач не трябва да използвате всички тези компоненти, обаче, винаги трябва да се посочи линк към LoaderManager буутлоудъра да се инициализира и да използва изпълнението на Loader клас. например CursorLoader. Следващите раздели описват как да се използват тези класове и интерфейси в заявлението.

Downloaders използването в приложението

Този раздел описва как да се използват програми за изтегляне на приложението за Android. В приложения, използващи товарачи, обикновено имат следните елементи:

Работещи буутлоудъра

LoaderManager контролира едно или повече в Loader случаи активност или фрагмент. Има само един LoaderManager за всяка операция или всеки фрагмент.

Loader обикновено инициализира onCreate () метод операция или метод onActivityCreated () фрагмент. Това се прави по следния начин:

Метод) "> initLoader () се следните параметри:

  • единен идентификационен код, посочващ товарач. В този пример идентификаторът е 0;
  • незадължителни аргументи, които се предават на зареждане при изграждане (в този пример, нулеви);
  • LoaderManager.LoaderCallbacks изпълнение. в която се призовава за издаване на клас LoaderManager товарач събития. В този пример, местната клас изпълнява LoaderManager.LoaderCallbacks интерфейс. така тя преминава препратка към себе си: това.

Повикване) "> initLoader () осигурява инициализация, товарач може да бъде един от двата изхода .:

  • Ако зареждане, определен от идентификатор вече съществува, той ще бъде използван повторно буутлоудъра създаден миналата.
  • Ако зареждане, определен от идентификатор не съществува,) "> initLoader () метод причинява LoaderManager.LoaderCallbacks на onCreateLoader (). Той е тук изпълнява код конкретни примери и да се върнете на нов зареждане на ОС. За повече информация, вижте. В раздел onCreateLoader.

Във всеки случай, този LoaderManager.LoaderCallbacks изпълнение, свързани с товарач и се извиква, когато държавната товарач. Ако се обадите компонент е в състояние на липса на грижи, което означава, че исканата зареждане на ОС вече съществува и формира своите данни в момента на обаждането. В този случай, системата незабавно ще задейства, D) "> onLoadFinished () (време)"> initLoader ()), се получава за него. За повече информация за това обаждане, вижте. В onLoadFinished секция.

Имайте предвид, че методът) "> initLoader () връща генерирани клас Loader. Но се изисква запис клас LoaderManager препратката към него. Управлява цикъла на живот товарач автоматично. Клас LoaderManager започва изтеглянето и го допълва, ако е необходимо, и подкрепя товарач и на свързаните с него това съдържание. това означава, че рядко ще си взаимодействат директно с товарач (макар и пример за използване на методите за челни товарачи за фина настройка на поведението му, вижте. LoaderThrottle в примерния код). за интервенции в процес да изтеглите LoaderManager.LoaderCallbacks методи. За повече информация, обикновено се използва, когато определени събития се случват на този, вижте. в Използване на обратни извиквания LoaderManager.

рестартиране на товарача

. При използване на метода) "> initLoader (), както е показано по-горе, тя използва съществуващата зареждане на ОС с определения идентификатор -. Ако някоя от зареждането на системата Ако не, тя ще създаде метод, обаче, понякога старите данни трябва да бъдат изхвърлени и ново начало ..

За да изтриете информацията от старите използван метод) "> restartLoader () Например, този метод изпълнение SearchView.OnQueryTextListener рестартира товарач, когато промените заявка Loader на потребителя трябва да се рестартира, така че той може да се използва модифициран филтър за търсене да се извърши нова заявка ..:

Използването на обратни извиквания LoaderManager клас

LoaderManager.LoaderCallbacks е интерфейс за обратно повикване, която позволява на клиента да си взаимодействат с LoaderManager клас.

Очаква се, че товарача, по-специално CursorLoader. ще запазят своите данни, след като те спре. Това позволява на приложенията да съхраняват своите данни в методи onStop () и onStart () операция, или фрагмент, така че, когато потребителят се връща заявлението, той не трябва да чакат за данни, за да се зареди отново. LoaderManager.LoaderCallbacks техники се използват, за да разберете, когато искате да създадете нов зареждане на ОС, както и да се уточни прилагането, когато е време да спре да използва за зареждане на данни.

LoaderManager.LoaderCallbacks интерфейс използва следните методи:

  • onCreateLoader () - създава и връща нова инстанция на класа Loader за даден идентификатор.
  • , D) "> onLoadFinished () - извиква, когато по-рано създаден товарач е завършил натоварване.
  • ) "> OnLoaderReset () - извиква, когато състоянието на по-рано създаден товарач се нулира, като данните са загубени.

Подробностите за тези методи са описани в разделите по-долу.

onCreateLoader

Когато се опитвате да получите достъп до зареждане на ОС (например по метода) "> initLoader ()), той проверява дали товарач посочено от идентификационния номер. Ако тя не съществува, тя създава метод LoaderManager.LoaderCallbacks onCreateLoader (). Това е мястото, където можете да създадете нова буутлоудъра. Обикновено това ще CursorLoader клас. обаче, можете да реализирате свой собствен клас и подклас на Loader.

В този пример, методът на обаждане onCreateLoader () създава CursorLoader клас. Трябва да се изгради CursorLoader клас, използвайки метода на конструктор, който изисква изчерпателен набор от информация, която е необходима за изпълнение на заявката за ContentProvider. По-специално, той е длъжен:

  • URI - URI на съдържание, което трябва да се получи;
  • проекция - списък на колони, които ще бъдат върнати. При предаването на нула, ще бъдат върнати всички колони, но това е неефективно;
  • подбор - филтър, обявяване които редове за връщане, форматирани като предложение SQL КЪДЕТО (с изключение на къде). Всички линии за този URI ще бъдат върнати при предаване на нула;
  • selectionArgs - пробата може да включва символи, които ще бъдат заменени със стойности от selectionArgs в реда на пробата "?". Стойностите ще бъдат вързани като низове;
  • sortOrder - от порядъка на редовете, форматиран като предложение SQL ORDER BY (с изключение на ORDER BY). При предаването на нула ще използва стандартната реда на сортиране, следователно, списъкът може да бъде сортиран.

onLoadFinished

Този метод се нарича, когато по-рано създаден товарач е завършил натоварване. Този метод се нарича гарантирано да се освободи най-новите данни, които са били предоставени от зареждане. В този момент, е необходимо старата данни, за да се спре напълно, като използвате (тъй като те скоро ще бъдат заменени). Това обаче не трябва да се прави от себе си, както за зареждане на данни и вече се погрижили.

Товарачът ще пусне подробности скоро открива, че приложението не ги използват вече. Например, ако данните са на курсора на CursorLoader. не поставят близо () сами по себе си. Ако курсорът е поставен в CursorAdapter. swapCursor трябва да се използва метод (), така че старият курсора не е затворен. Например:

onLoaderReset

Този метод се нарича, когато състоянието на по-рано създаден товарач се нулира, като данните са загубени. Това обаждане ви позволява да знаете, когато данните са на път да бъдат освободени, така че можете да премахнете вашата връзка с тях.

Тази реализация причинява swapCursor () с нулева стойност:

Като пример, описание е дадено пълна реализация Фрагмент фрагмент. ListView, която показва резултатите от заявката към доставчика на подобно съдържание, като контакти. За да заявите управление на търговец използва CursorLoader клас.

Това, че приложението може да получите достъп до контактите на потребителя, както е показано в този пример, трябва да има READ_CONTACTS резолюция в манифеста си.

други примери

В ApiDemos има няколко различни примери, които илюстрират използването на програми за изтегляне:

  • LoaderCursor - пълната версия на фрагмента е показано по-горе.
  • LoaderThrottle - пример за това как да се използва за контрол за намаляване на броя на заявките, извършвани от доставчика на съдържание при смяна на неговите данни.

За информация относно изтеглянето и инсталирането на SDK код проби, вижте. Член Първи код проби.

Следвайте @AndroidDev на Twitter

Следвайте Android Developers в Google+

Вижте Android Developers на YouTube

Този клас изисква ниво API или по-висока

Този документ е скрит, защото избраната от вас ниво API за документацията е. Можете да промените нивото на документация API с лост над лявата лента за навигация.

За повече информация за определяне нивото на API на приложението си изисква, прочетете Подкрепа различна платформа версии.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!