2014-12-01 4 views
0

Im, использующий Robospice (лучшая библиотека до сих пор для меня) с Sping ang Gson для общения с моими веб-сервисами - простой, чистый и работающий хорошо. Теперь я хочу хранить свои данные в базе данных sql - например, для автономного режима. Моя проблема заключается в том, как объединить robospice с ormlite или как использовать расширение robospice для ormlite.Сохранить результат запроса robospice, сохраненный в sqllite freeze UI

До сих пор Ive создал этот

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. Но это решение заморозит мой пользовательский интерфейс, когда необходимо сохранить много данных. Как я могу избежать этого замораживания?

Я проверил образцы robospice с sqllite, но у меня проблемы с образцами и до сих пор выглядит так, как будто это не законченное расширение.

ответ

0

UI заморозить, поскольку метод onRequestSuccess вызывается в потоке пользовательского интерфейса (и это совершенно нормально), и сохранение данных занимает некоторое время. Поэтому вы должны создать новый поток (или AsyncTask) в onRequestSuccess и сохранить данные в БД в этом новом потоке.