저는 ListView를 작성 중이며 ListView의 각 항목에는 여러 가지 커서의 데이터가 있습니다. ListView의 각 항목에 대한 모든 데이터를 보유하는 객체가 있습니다. 이러한 개체의 ArrayList를 사용하여 ListView를 채 웁니다.커서가있는 CursorLoader가 루프 내에 있습니다.
지금 구현하고있는 방법에 따라 ContentProvider A의 모든 행에 커서를 가져옵니다.이 커서를 통해 루프를 반복하고 그 중 세 개를 ArrayList의 각 객체에 추가합니다. 이 루프를 반복 할 때마다 ContentProvider A의 필드를 기반으로 ContentProvider B의 필드를 가져 오는 새 커서가 만들어집니다.이 필드는 ContentProvider C의 다른 필드를 가져 오는 데 사용됩니다. 따라서 기본적으로 많은 커서가 만들어지고, 후속 커서의 쿼리는 이전 커서의 데이터에 종속됩니다.
내가 알기로 CursorLoaders 및 LoaderManager를 사용하여 별도의 스레드에서 커서를 생성하고 수명주기를 올바르게 관리하는 것이 이상적입니다. 이 접근법을 어떻게 번역 할 것인지, 또는 실제로 커서의 수를 최소화하는 더 나은 접근법이 있는지는 잘 모르겠습니다.
'커서'는 데이터베이스 쿼리의 결과를 둘러싼 래퍼에 불과하므로 어쩌면 '중첩 된'커서에서 가져 오는 데이터가 포함 된 방식으로 후자를 최적화 할 가능성이 있습니다 ? –
나는 너무 일반적으로 그것을 설명하려고 노력하고 있었고, 도취 당했다. 테이블은 실제로 ContentProviders입니다. 좀 더 구체적으로 내 질문을 수정하겠습니다. 미안합니다. –