2011-07-28 2 views
0

콘텐츠 공급자와 작업 할 때 안드로이드에서 managedquery()를 사용하여 커서를 다시 가져 오려고했습니다. 이것은 활동이 일시 중지되거나 다시 시작될 때 커서가 닫히는 것을 처리 할 것이라고 언급했기 때문에 이것을 사용했습니다.안드로이드에서 관리 쿼리를 효율적으로 사용하는 방법은 무엇입니까?

그러나 이것은 활동 클래스에서만 작동합니다. 하지만 안드로이드에서 asynctask를 사용하는 배경 스레드가 두 개 이상 있습니다. 하나 이상의 스레드에서 같은 목록 가져 오기를 수행합니다. 그래서 그것의 반복적 인 코드. 이것은 다른 스레드 dobackground()에서 하나의 스레드 클래스의 함수를 호출 할 수 없기 때문입니다. 이 반복적 인 코드를 피할 수있는 쉽고 안전한 방법이 있습니까? 사려 깊은 조언. 도와 주셔서 감사합니다.

답변

0

이 db 쿼리 코드를 구현하는 abstract asynctask 클래스를 사용할 수 없습니까? (백그라운드 스레드에서 모두 수행 한 경우 doInBackground()에 넣거나, 그렇지 않은 경우 전용 메서드에 넣음) 이 abstract 클래스를 확장 한 구체적인 하위 클래스를 super.doInBackground를 호출하거나 해당 private 메소드를 호출 할 수 있습니까?

E.G.

private abstract AbstractQueryTask extends AsyncTask<Long, Void, Long> { 

protected Cursor querycode{ 
//put your query code here 
} 

} 

public ConcreteQueryTask extends AbstractQueryTask { 

//put the doInBackground and onPostExecute implementations here 

} 
관련 문제