生活随笔
收集整理的這篇文章主要介紹了
4.Android loader详解___回调
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
onLoadFinished
這個方法是在前面已創建的裝載器已經完成其加載過程后被調用.這個方法保證會在應用到裝載器上的數據被釋放之前被調用.在此方法中,你必須刪除所有對舊數據的使用(因為它將很快會被刪除),但是不要自己去釋放它們,因為它們的裝載器會做這些事情.
裝載器一旦了解到應用不再使用數據時,將馬上釋放這些數據.例如,如果數據是一個從CursorLoader來的游標,你不應調用游標的close().如果游標被放置在一個CursorAdapter中,你應使用swapCursor()方法,以使舊的游標不被關閉.例如:
[java]?view plaincopy
??SimpleCursorAdapter?mAdapter;??...????public?void?onLoadFinished(Loader<Cursor>?loader,?Cursor?data)?{??????????????????mAdapter.swapCursor(data);??}??onLoaderReset
當一個已創建的裝載器被重置從而使其數據無效時,此方法被調用.此回調使你能發現什么時候數據將被釋放于是你可以釋放對它的引用.
下面這個實現調用參數為null的swapCursor():
[java]?view plaincopy
??SimpleCursorAdapter?mAdapter;??...????public?void?onLoaderReset(Loader<Cursor>?loader)?{????????????mAdapter.swapCursor(null);??}??例子
作為一個例子,這里完整實現了一個Fragment顯示一個包含從聯系人contentprovider?返回查詢數據的ListView的內容的功能.它使用一個CursorLoader來管理對provider的查詢.
為了能從用戶的聯系人中取得數據,本例的manifest必須包含READ_CONTACTS權限.
[java]?view plaincopy
public?static?class?CursorLoaderListFragment?extends?ListFragment??????????implements?OnQueryTextListener,?LoaderManager.LoaderCallbacks<Cursor>?{??????????????SimpleCursorAdapter?mAdapter;??????????????String?mCurFilter;????????@Override?public?void?onActivityCreated(Bundle?savedInstanceState)?{??????????super.onActivityCreated(savedInstanceState);????????????????????????????????setEmptyText("No?phone?numbers");??????????????????????setHasOptionsMenu(true);??????????????????????mAdapter?=?new?SimpleCursorAdapter(getActivity(),??????????????????android.R.layout.simple_list_item_2,?null,??????????????????new?String[]?{?Contacts.DISPLAY_NAME,?Contacts.CONTACT_STATUS?},??????????????????new?int[]?{?android.R.id.text1,?android.R.id.text2?},?0);??????????setListAdapter(mAdapter);??????????????????????getLoaderManager().initLoader(0,?null,?this);??????}????????@Override?public?void?onCreateOptionsMenu(Menu?menu,?MenuInflater?inflater)?{????????????????????MenuItem?item?=?menu.add("Search");??????????item.setIcon(android.R.drawable.ic_menu_search);??????????item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);??????????SearchView?sv?=?new?SearchView(getActivity());??????????sv.setOnQueryTextListener(this);??????????item.setActionView(sv);??????}????????public?boolean?onQueryTextChange(String?newText)?{??????????????????????????????mCurFilter?=?!TextUtils.isEmpty(newText)???newText?:?null;??????????getLoaderManager().restartLoader(0,?null,?this);??????????return?true;??????}????????@Override?public?boolean?onQueryTextSubmit(String?query)?{????????????????????return?true;??????}????????@Override?public?void?onListItemClick(ListView?l,?View?v,?int?position,?long?id)?{????????????????????Log.i("FragmentComplexList",?"Item?clicked:?"?+?id);??????}??????????????static?final?String[]?CONTACTS_SUMMARY_PROJECTION?=?new?String[]?{??????????Contacts._ID,??????????Contacts.DISPLAY_NAME,??????????Contacts.CONTACT_STATUS,??????????Contacts.CONTACT_PRESENCE,??????????Contacts.PHOTO_ID,??????????Contacts.LOOKUP_KEY,??????};??????public?Loader<Cursor>?onCreateLoader(int?id,?Bundle?args)?{??????????????????????????????Uri?baseUri;??????????if?(mCurFilter?!=?null)?{??????????????baseUri?=?Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,??????????????????????Uri.encode(mCurFilter));??????????}?else?{??????????????baseUri?=?Contacts.CONTENT_URI;??????????}????????????????????????????????String?select?=?"(("?+?Contacts.DISPLAY_NAME?+?"?NOTNULL)?AND?("??????????????????+?Contacts.HAS_PHONE_NUMBER?+?"=1)?AND?("??????????????????+?Contacts.DISPLAY_NAME?+?"?!=?''?))";??????????return?new?CursorLoader(getActivity(),?baseUri,??????????????????CONTACTS_SUMMARY_PROJECTION,?select,?null,??????????????????Contacts.DISPLAY_NAME?+?"?COLLATE?LOCALIZED?ASC");??????}????????public?void?onLoadFinished(Loader<Cursor>?loader,?Cursor?data)?{????????????????????mAdapter.swapCursor(data);??????}????????public?void?onLoaderReset(Loader<Cursor>?loader)?{??????????????????????????????mAdapter.swapCursor(null);??????}??}??
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/ywq-come/p/5925302.html
總結
以上是生活随笔為你收集整理的4.Android loader详解___回调的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。