마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 ListView아이템중 일부분만 쓰레드를 돌리고 싶습니다.

0 추천
item을 add해줄때마다  쓰레드를 돌리니 제대로 작동이 하지 않습니다.

쓰레드는 UI를 직접건들이지 못하여

UI쓰레드라는게 있고 AyncTask라는 클래스가 있는 걸로 알고 있습니다.

아직 초보라서 검색만으로만 얻는 정보가 너무 미미한거 같습니다.

UI쓰레드와 AyncTask 예제를 구할 수 없을까여
익명사용자 님이 2013년 7월 25일 질문

3개의 답변

0 추천
데이터와 뷰를 별도로 관리하세요

데이터를 관리하는 스레드 그리고 뷰는 해당 데이터를 표현만 하게 하는 것이죠

뷰는 데이터가 아직 존재하지 않으면 임의의 이미지나 텍스트를 출력하게끔하고 데이터가 존재하면 해당 데이터를 출력하는

 

이해가 되시려나요?
aucd29 (218,390 포인트) 님이 2013년 7월 25일 답변
그렇다면 뷰는 한번 출력하게끔하고 데이터관리만 쓰레드를 돌리면 값이 계속 바뀐다는 말씀이신가요?
0 추천

간단한 작업이라면,

스레드 작업이 끝나는 시점에 액티비티의 runOnUiThread()를 호출해서 UI를 업데이트 합니다.

 

new Thread() {

public void run() {

...

runOnUiThread(new Runnable(){ public void run() { ... } }) ;

}

}.start();

 

만일 현재 클래스가 액티비티가 아니라면 액티비티에 내부클래스로 리스너를 하나 만들어서 연결시켜두면 되죠.

AsyncTask는 설명할 내용이 많아서 좀 귀찮..-,.-

Elex (9,090 포인트) 님이 2013년 7월 25일 답변
0 추천

http://arabiannight.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9CAndroid-AsyncTask-%EC%82%AC%EC%9A%A9%EB%B2%95

android AsyncTask 라고 검색하니 많이 나오네요.

 

간단히 말씀드리자면 doInBackground 에 시간이 걸리는 작업을 기술하고

AsyncTask.execute() 메서드로 실행을 하면 일련의 순서에 따라 background 에서 작업을 처리 합니다.

onPreExecute, onPostExecute, publishProgress 등 다른 메서드들은 블로그들에 설명이 잘 나와 있습니다.

 

제가 AsyncTask 처음 접했을 때 어려웠던 부분이 

class Task extends AsyncTask<String, Integer, Void>  이 클래스 선언 부분 이었는데

첫번째 인자는 doInBackground 로 전달되는 값의 자료형

두번째 인자는 publishProgress 메서드를 통해 onProgressUpdate 메서드로 전달되는 값의 자료형

세번째 인자는 doInBackground 에서 작업이 끝난 후 onPostExecute 로 전달되는 값의 자료형입니다.

하나씩 바꿔가면서 에러 나는 부분 보시면 이해가 되실거에요

말이 너무 길어지니 검색 한번 해 보세요 ㅎㅎ

ire (3,900 포인트) 님이 2013년 7월 25일 답변
...