2013-06-19 5 views
1

내 프로젝트에 Volley를 통합하고 싶습니다. 그러나 sqlite 데이터베이스에 데이터를 저장하는 데 문제가 있습니다. 액티비티 (웹 서비스의 응답을받는 곳)에서 저장 작업을 수행하는 것이 좋습니까? 아니면 여기서 로더 패턴을 사용하는 것이 더 나은 방법일까요? 감사합니다Android Volley SQLite 통합/조합

답변

1

안드로이드의 기본 UI 스레드에서 데이터베이스에 변경 사항을 쓰고 싶지는 않을 것입니다. 별도의 스레드에서 수행하는 것이 가장 좋습니다. Volley의 결과는 항상 기본 UI 스레드에서 반환됩니다 (자세한 내용은 Volley의 ResponseDeliveryRunnable 클래스 참조). 당신을,

AsyncTask.execute(new Runnable() { 
    public void run() { 
    // database insert here 
    } 
}); 

정말이 응용 프로그램의 구조에 따라 달라집니다

이것은 당신이 당신의 Response.Listener에 메인 UI 스레드 떨어져 뛰어 Executor에 혹은 다음 코드를 사용할 수 있음을 의미 DAO 계층과 도메인 개체를 가지고 있습니까? 아니면 직접 SQL 문을 사용하여 웹 서비스의 데이터를 데이터베이스에 곧바로 삽입합니까? 개인적으로 나는 나에게 도메인 객체와 DAO를 제공하는 greenDAO ORM을 사용하고 삽입/삭제/업데이트를 위해 데이터베이스로 작업 할 때 나는 항상 안드로이드 메인 UI 스레드를 벗어났다.

+0

저는 databatse로 작업하기 위해 contentproviders를 사용하고 있습니다. Activity에서 ContentResolver를 사용하거나 AsyncTask에서 더 잘 수행 할 수 있습니까? – itolianezzz

+0

이 질문은 AsyncTask에 대한 나의 제안이 ContentProvider에 대한 좋은 해결책임을 확인시켜줍니다. - http://stackoverflow.com/questions/8392012/should-calls-to-a-content-resolver-be-done-in-a-service- ie-separate-thread – Syntax

+0

구문, 고마워. 나는이 패턴을 시도 할 것이다. – itolianezzz

관련 문제