2013-10-29 2 views
0

SQLite를 사용하여 데이터를 가져오고 커서와 어댑터를 사용할 때 커서 로더를 사용해야합니까 ??. 이것이 최선의 방법입니까? 커서 로더를 사용해야하는시기는 분명하지 않습니다. 내 앱이 다른 앱과 데이터를 공유하는 경우에만 사용해야합니까? 커서 + 어댑터 + listView를 사용하여 나에게 정말 짜증나기 때문에 내 질문이 나온다. 때로는 notifyDataSetChanged가 작동하지 않는 경우도 있으므로 가끔 까다로운 작업이었습니다. 나는 커서 로더에 대해서 읽는 것을 시작하지만, 이것이 특히 이것에 대한 해결 방법인지 아니면 내가 해결할 수 있는지 확신 할 수 없다.언제 커서 로더를 사용할 수 있습니까?

모든 설명이 정말 감사하겠습니다!

감사합니다.

답변

1

로더를 사용하면 모든 커서 작업이 비동기 적으로 수행되므로 UI ​​스레드를 차단할 가능성이 없어집니다.

사용하는 대신 notifyDataSetChanged CursorAdapter를 사용하지 마세요 사용하는 경우 :

db.updateData(); 
yourCursor = db.getData(); 
yourAdapter.changeCursor(yourCursor); 
+0

그래서, 내가 커서 로더를 사용해야을? 심지어 내 애플 리케이션이 다른 애플 리케이션과 데이터베이스를 공유 못해? – kiduxa

+0

커서 로더는 데이터베이스 공유를 활성화하지 않습니다. 다른 앱과 데이터베이스를 공유하려면 ContentProvider를 사용하십시오. [this] (https://thenewcircle.com/s/post/1375/android_content_provider_tutorial). 커서 로더는 Android 3.0에서 도입되어 커서 작동을 비동기 적으로 처리합니다. 작은 데이터 청크 만 읽으면 커서 로더를 사용하지 않아도됩니다. [this] (http://www.androiddesignpatterns.com/2012/07/loaders-and-loadermanager-background.html) 커서 로더에 대한 자세한 정보 – ramaral

+0

커서 로더가 말한대로 contentProviders 및 contentPorviders를 사용하기 때문에 데이터베이스 공유에 대해 언급했습니다. 앱간에 데이터를 공유하는 데 사용됩니다. 그게 내가 왜 혼란스럽지,하지만 데이터베이스를 공유 할 필요가 없다. 그래서, 대형 데이터베이스를 가지고있을 때만 커서 로더를 사용해야합니까? – kiduxa

관련 문제