2014-12-01 2 views
0

내 웹 서비스와 통신하기 위해 Sping ang Gson과 Robospice (지금까지는 최고의 라이브러리)를 사용하고 있습니다. 간단하고 깨끗하며 작동 중입니다. 이제 SQL 데이터베이스에 내 데이터를 저장하려고합니다. 예를 들어 오프라인 모드입니다. 내 문제는 ormlite와 robospice를 결합하는 방법 또는 ormlite에 robospice extension을 사용하는 방법입니다. robospice 요청 결과를 sqllite freeze로 저장합니다. UI

지금까지 필자는이

public class MyActivity extends Activity { 

private void performRequest() { 
    MyRequest request = new MyRequest(); 
    spiceManager.execute(request, request.createCacheKey(), 
      DurationInMillis.ONE_MINUTE, new MyRequestListener()); 
} 

private class MyRequestListener implements 
     RequestListener<MyDaoList> { 
    @Override 
    public void onRequestFailure(SpiceException e) { 
     ... 
    } 

    @Override 
    public void onRequestSuccess(MyDaoList myDaoList) { 

     RuntimeExceptionDao<MyDao, Integer> myDao = mDatabaseHelper.getMyDataDao(); 
     for (MyDap mDao : myDaoList) { 
      myDao.createIfNotExists(mDao); 
     } 

     ... 
    } 
} 
} 

잘하지만, 완벽하지 작동 만들었습니다. 데이터가 다운로드되어 SQL 데이터베이스에 저장됩니다. 그러나이 솔루션은 많은 데이터를 저장해야 할 때 UI를 고정시킵니다. 이 동결을 어떻게 피할 수 있습니까?

sqllite로 robospice 샘플을 검사했지만 샘플에 문제가있어 확장이 완료되지 않은 것처럼 보입니다.

답변

0

UI가 고정되어 있기 때문에 UI 스레드에서 onRequestSuccess 메서드가 호출되며 (이는 정상적으로 처리됩니다.) 데이터를 저장하는 데는 시간이 걸립니다. 따라서 새 스레드 (또는 AsyncTask)를 onRequestSuccess에 만들고이 새 스레드의 데이터를 DB에 저장해야합니다.

관련 문제