3

我设法实现了 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();
        }
    }

谢谢...

4

1 回答 1

2

您误解了 RoboSpice。你得到的行为是正确的。

当活动停止(如您所说的非活动状态)时,其所有请求侦听器都将被删除,它们将不会收到通知。

仅当拥有它们的活动仍然存在时,才会通知侦听器。这就是 RoboSpice 的重点:防止监听器或活动的内存泄漏。

如果你想“继续监听”一个请求的结果,即使启动它的活动已经处于非活动状态,那么你必须采用不同的策略。您应该使用更稳定的上下文,如应用程序或服务并启动您的请求表单,或者可能只是监听来自该上下文的请求结果(使用 addListenerIfPending,而不是执行)。

于 2013-01-20T08:05:25.527 回答