Android Robospice/改造后台服务访问数据库
我已经成功地创建了一个改型API Rest客户端,该客户端同时进行GET和POST调用,并将其作为后台服务集成到Robospice中 但是,我希望Robospice服务连接到数据库,并异步保存从GET调用检索到的对象。使用改型Android Robospice/改造后台服务访问数据库,android,robospice,retrofit,Android,Robospice,Retrofit,我已经成功地创建了一个改型API Rest客户端,该客户端同时进行GET和POST调用,并将其作为后台服务集成到Robospice中 但是,我希望Robospice服务连接到数据库,并异步保存从GET调用检索到的对象。使用改型回调类似乎是显而易见的方法,但是连接到数据库需要上下文,我担心泄漏上下文 那么,让RobospiceSpiceService在处理请求之前和之后将数据持久化到数据库中的最佳方法是什么呢?最后,当我批量处理各种Rest API服务调用以保存无线电()时,我调用Rest API
回调类似乎是显而易见的方法,但是连接到数据库需要上下文
,我担心泄漏上下文
那么,让RobospiceSpiceService
在处理请求之前和之后将数据持久化到数据库中的最佳方法是什么呢?最后,当我批量处理各种Rest API服务调用以保存无线电()时,我调用Rest API服务(SpiceService
s)从控制器Robospice SpiceService
中,包含对数据库助手的引用(需要上下文
)以及对其余服务的相应改装
回调
通过这种方式,控制器服务处理所有触发(AlarmManager
触发控制器服务)并持续到DB,其余服务可以在不知道上下文
、数据库
或类似信息的情况下正常关闭
对于@lion789:
我有4种型号,每种型号都有相应的API调用以与服务器同步(1POST,3GET)。
为了处理这些同步调用,我有一个IntentService
,其中包含4个SpiceManager
属性和4个reformation回调
类-每个模型/API调用一个。
IntentService
被传递一个Enum
,指示应该调用的API序列。
IntentService
调用运行的相应的SpiceManager
,然后回调
触发持久性并调用IntentService
方法来触发序列中的下一个API调用
当我将其用于我的Auth和Push注册码时,这其中有很多是抽象的和接口的,所以描述起来有点像噩梦,但到目前为止它工作得很好。你的问题对我来说真的很模糊。我不明白为什么你不能使用RS的正常持久性机制。如果你这样做,那就很容易了在执行请求时保留数据
也许我遗漏了一些东西。因此,如果您的需求确实是自己持久化数据,那么您提出的方法看起来是正确的。您可以将spice服务本身注入到您的请求中(例如,请参阅如何在spice服务中覆盖addRequest)。然后,请求将保存一个上下文,该上下文可用于回调内部或请求本身内部的持久性
最近,我使用Regulation和RS编写了一个POST请求。我更改了POST请求的签名以返回一个Void。然后稍微修改了Regulation converter以处理该情况并返回null。该请求通过注入接收spice服务,如前所述,可以对数据库执行一些操作
下面是一些代码,用于将应用程序注入来自spice服务的请求中
@Override
public void addRequest(CachedSpiceRequest<?> request,
Set<RequestListener<?>> listRequestListener) {
if (request.getSpiceRequest() instanceof MySpiceRequest) {
MySpiceRequest<?> mySpiceRequest = (MySpiceRequest<?>) request
.getSpiceRequest();
mySpiceRequest.setApplication(this.getApplication());
}
super.addRequest(request, listRequestListener);
}
@覆盖
public void addRequest(CachedSpiceRequest请求,
设置)请求
.getSpiceRequest();
mySpiceRequest.setApplication(this.getApplication());
}
super.addRequest(请求,listRequestListener);
}
嘿,你有这样的例子吗……我实际上也在尝试使用Robospice来缓存数据,我的回答是为了为@Lion789提供更多信息。如果你需要更多信息,请告诉我。谢谢,我真的很好奇,如果我有okHttpClient和Reformation,缓存是否会自动发生,这意味着我不需要使用Rob那么ospice呢?@lion789不太清楚缓存是什么意思。如果你说的是在数据库中持久化同步数据,我是在滚动我自己的DatabaseHelper,而不是Robospice
一个。如果你这样做,请看OrmLite
,它是Robospice
数据库助手继承的。如果你说的是响应缓存(在本地文件中),只需通过改装
(参见Jesse Wilson的要点)即可完成哦,好的,谢谢,是的,我的意思是响应缓存…我必须处理jesse的响应,因为它不起作用…但是有人告诉我,如果你只有两个LIB,并在改造中的请求调用的标题中指定它,它会自动缓存…这就是为什么我不确定