티스토리 뷰
[원본-일문] http://blog.nkzn.net/entry/20120113/1326478800 변역기 번역본.
시대는 AsyncTask보다 AsyncTaskLoader
아무래도 시대는 AsyncTaskLoader 같습니다.
android-support-v4.jar에 있으므로 1.6 이상에서 사용할 수 있으며,
간단한것 같습니다. 일단 사용해보기로합시다.
AsyncTaskLoader |
Developers
어디부터 어디까지가 AsyncTaskLoader 사용 처리인지 모르겠습니다.
AsyncTask 간단한 예로 @vvakame 의 JsonPullParser의
버전 샘플에 주목 해보십시오.jsonpullparser-
-sample
HTTP에서 입수해온 JSON을 성형하여 ListView에 표시 할뿐. 알기 쉽다. AsyncTask 잘 모르는 저도 방향을 잡을 수 있었습니다.
이를 참고로하면서 AsyncTaskLoader 구현한 것이 다음입니다.
List
MainActivity.
package net.nkzn.android.sample.asynctaskloader; import Java.util.List; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends FragmentActivity Implements LoaderCallbacks<List<String>> { ArrayAdapter<String> mAdapter; @ Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 결과 표시 용 ListView listView = (ListView) findViewById(R.id.listview); mAdapter = New ArrayAdapter<String>(this , android.R.layout.simple_list_item_1); listView.setAdapter(mAdapter); // 로더를 초기화 Bundle args = New Bundle( 1 ); // onCreateLoader에 넘겨 줄 값은 여기에 getSupportLoaderManager().initLoader( 0 , args, this ); } / ** * 로더를 초기화 할 때 불린다. * (이번 예라고 onCreate에서 초기화) * / @ Override public Loader<List<String>> onCreateLoader(int ID, Bundle args) { // 객체 만들어 전달하고 StringsDownloadTaskLoader loader = New StringsDownloadTaskLoader(getApplication()); loader.forceLoad(); // 이제로드가 시작된다. AsyncTaskLoader # onStartLoading에 구현하는 것도 가능. return loader; } / ** * 데이터 로딩이 완료 될 때 불리는 * @ param data AsyncTaskLoader # loadInBackground에서 반환 값 * / @ Override public void onLoadFinished(Loader<List<String>> loader, List<String> data) { for(String s : data) { mAdapter.add(s); } mAdapter.notifyDataSetChanged(); } / ** * 잘 와칸네 * / @ Override public void onLoaderReset(Loader<List<String>> loader) { // TODO Auto-generated method stub } }
StringsDownloadTaskLoader.
package net.nkzn.android.sample.asynctaskloader; import Java.util.ArrayList ; import Java.util.List; import android.content.Context; import android.support.v4.content.AsyncTaskLoader; public class StringsDownloadTaskLoader extends AsyncTaskLoader<List<String>> { / ** * 생성자. * super (Context)를 실행할 수 분 생성자의 인수는 뭐든지 OK. * 이 예제에서는 MainActivity # onCreateLoader에서 호출됩니다. * / public StringsDownloadTaskLoader(Context context) { super(context); } / ** * 백그라운드 처리하고 싶은 것. * 파라미터 지정 형식으로 데이터를 반환해야한다. * / @ Override public List<String> loadInBackground () { List<String> strings = New ArrayList<String>(); try { Thread.sleep( 500 ); // 데이터 읽기 대신 strings.add("hogehoge"); strings.add("hugahuga"); } catch(InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Strings; } }
개인적 정리
- Web의 작은 파일이 필요할 때 스레드 관리의 번거 로움에서 해방.
- Activity / Fragment에서 분리 할 때문에 코드가 깨끗.
- AsyncTask나 Thread 관리를 기억할 부담에서 일시적으로 해방.
'모바일 > Android' 카테고리의 다른 글
Android Action Bar Style Generator (안드로이드 액션바 스타일 생성기) (0) | 2012.12.26 |
---|---|
Android ListView에 Disclosure Indicator 구현 (0) | 2012.12.24 |
Eclipse Android 에뮬 속도 빠른 BlueStacks App Player로 대체하기 (2) | 2012.12.19 |
Android Fragment 튜토리얼 링크들 (0) | 2012.12.18 |
Actionbar Sherlock 4.0 시작해보기 (0) | 2012.12.17 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
TAG
- javascript
- JSON
- Wordpress
- Prototype
- IE
- 한글
- nginx
- Docker
- ASP
- git
- laravel
- 워드프레스
- mssql
- Chrome
- API
- Linux
- JQuery
- Debug
- iis
- sencha touch
- iphone
- centos
- IOS
- 안드로이드
- PHP
- Mac
- nodejs
- Android
- classic asp
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함
Blog is powered by
Tistory / Designed by
Tistory