Android 如何使用RoboSpice连接到挂起的请求(Splash>;主活动)?
我有一些关于RoboSpice(高级用法)的问题 注意:我将RoboSpice与Android 如何使用RoboSpice连接到挂起的请求(Splash>;主活动)?,android,ormlite,robospice,Android,Ormlite,Robospice,我有一些关于RoboSpice(高级用法)的问题 注意:我将RoboSpice与或mlite一起使用 我的Android应用程序由两个主要活动组成:第一个是SplashActivity(启动时启动),第二个是MainActivity(启动屏幕后5秒启动)。我对splash执行2个请求: 喷溅活动 public class SplashActivity extends BaseActivity { private fooRequest fooRequest; private ba
或mlite一起使用
我的Android应用程序由两个主要活动组成:第一个是SplashActivity
(启动时启动),第二个是MainActivity
(启动屏幕后5秒启动)。我对splash执行2个请求:
喷溅活动
public class SplashActivity extends BaseActivity {
private fooRequest fooRequest;
private barRequest barRequest;
private exampleRequest exampleRequest;
private NewsRequest newsRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
fooRequest = new fooRequest();
barRequest = new barRequest();
...
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Launch MainActivity...
}
}, 5000);
}
@Override
protected void onStart() {
super.onStart();
getSpiceManager().execute(fooRequest, new Integer(0), DurationInMillis.ONE_DAY, new fooRequestListener());
getSpiceManager().execute(barRequest, new Integer(1), DurationInMillis.ONE_DAY, new barRequestListener());
}
public final class fooRequestListener implements RequestListener<Foo> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Log.w("MyApp", "RoboSpice - Foo request failure");
}
@Override
public void onRequestSuccess(final Foo result) {
}
}
public final class barRequestListener implements RequestListener<Bar> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Log.w("MyApp", "RoboSpice - Bar request failure");
}
@Override
public void onRequestSuccess(final Bar result) {
}
}
}
但是我不明白这里的spiceManager.getFromCache
的目的
谢谢 我会让启动画面持续更长时间。它的用途看起来真的很模糊:显示徽标或其他东西,或者执行请求并显示“请等待消息”
在第一种情况下,不执行任何请求都可以。在第二种情况下,可以等待他们回来
我真的更喜欢那些需要快速启动的应用程序。启动屏幕应持续不到1秒。之后的第一个屏幕应处理数据查询和请等待消息
但要回答你的问题:
2) 是的,SpiceManager缓存方法使用缓存到期的方式与executeRequest相同。您可以检查缓存中是否有内容,但必须通过指定数据的过期限制来指定“有效”数据的含义
3) 我看不到有重试策略的链接和您的总体问题。默认情况下,RoboSpice具有重试策略,可以对失败的请求重试3次。如果无法从缓存中获取数据,则表示缓存中没有任何内容。如果调用了侦听器的故障挂钩,则网络请求失败。
两者可以是同一个监听器,你的应用程序应该有一个通用机制,1)显示出问题,2)如果需要,在一段时间后重新启动请求(可能是刷新按钮/项目菜单)
我希望我能帮上忙,但不是很确定。有什么想法(问题2+3)?为什么我从类型SpiceManager中获取addListenerIfPending(类、对象、请求侦听器)的方法是不推荐的?现在我们必须使用PendingRequestListener。你能为“CalendarSpiceService”发布代码吗?@MarianPaździoch当然!
public class MainActivity extends BaseActivity {
private SpiceManager spiceManager = new SpiceManager(CalendarSpiceService.class);
...
@Override
protected void onStart() {
super.onStart();
spiceManager.start(this);
spiceManager.addListenerIfPending(Foo.class, new Integer(0), new fooRequestListener());
spiceManager.addListenerIfPending(Bar.class, new Integer(2), new newsRequestListener());
spiceManager.getFromCache(Foo.class, new Integer(0), DurationInMillis.ONE_DAY, new fooRequestListener());
spiceManager.getFromCache(Bar.class, new Integer(2), DurationInMillis.ONE_DAY, new newsRequestListener());
}
...
public final class fooRequestListener implements RequestListener<Foo> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Log.w("MyApp", "RoboSpice - Foo request failure");
}
@Override
public void onRequestSuccess(final Foo result) {
String test = result.getResult().iterator().next().getTitle();
Log.w("MyApp", "RoboSpice - Foo request OK ! "+test);
}
}
public final class barRequestListener implements RequestListener<Bar> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Log.w("MyApp", "RoboSpice - Bar request failure");
}
@Override
public void onRequestSuccess(final Bar result) {
Log.w("MyApp", "RoboSpice - Bar request OK ! "+test);
}
}
}