我设法实现robospice (GoogleHttpClientSpiceService)的样本,它的工作-它成功地去到服务器,获取数据并将其存储在缓存中。如果Activity不是onPause,甚至可以显示toast并更新GUI。
我的问题(也是我尝试robospice的唯一原因)是,如果Activity被恢复,它不会再次得到通知。我做错了什么吗?
@Override //THIS IS NOT CALLED ON ACTIVITY RESUME (BECAUSE OF THIS I CANNOT DISMISS DIALOG)
public void onRequestSuccess( final String result ) {
Toast.makeText( PrijavaActivity.this, "success", Toast.LENGTH_SHORT ).show();
Log.w(TAG, "sakses" + result);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag("prijavaDialog");
if(fragment!=null) {
FragmentTransaction ft = fm.beginTransaction();
ft.remove(fragment);
ft.commit();
}
}
谢谢…
你误解RoboSpice了。你得到的行为是正确的。
当一个活动停止(如您所说的不活动)时,它的所有请求侦听器将被删除,它们将不会被通知。
监听器只有在拥有它们的活动还活着的时候才会被通知。这就是RoboSpice的全部意义:防止侦听器或活动的内存泄漏。
如果你想"继续监听"一个请求的结果,即使发起它的活动已经不活动了,那么你必须采用不同的策略。您应该使用更稳定的上下文,如应用程序或服务,并从它启动您的请求,或者可能只是从该上下文中侦听请求结果(使用addListenerIfPending,而不是执行)。