我使用Robospice(迄今为止我最好的lib)和Sping ang Gson与我的网络服务进行沟通 - 简单,干净,工作正常。现在我想将我的数据存储在sql数据库中 - 例如用于离线模式。我的问题是如何结合robospice与ormlite或如何使用robospice扩展为ormlite。
到目前为止,我已经创建了这个
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 :(得分:0)
UI冻结,因为在UI线程上调用onRequestSuccess
方法(并且它完全正常)并且保存数据需要一些时间。因此,您应该在onRequestSuccess
中创建新线程(或AsyncTask),并在此新线程中将数据保存到DB。