Robospice无法启动SpiceManager,因为没有类的服务

时间:2014-09-12 15:46:29

标签: gson robospice spring-android

我正在尝试使用以下库来开发我的应用程序。

  • Robospice

  • GSON

  • 和Spring for android

为此,在我的gradle文件中添加了以下依赖项

compile 'com.octo.android.robospice:robospice-spring-android:1.4.13'
compile 'com.google.code.gson:gson:2.2.4'

在清单文件中,我在应用程序标记中插入了以下行。

<service
    android:name="com.octo.android.robospice.GsonSpringAndroidSpiceService"
    android:exported="false" />

现在,我创建了一个用作Base Activity的基类。而且,我通过以下方式做到了这一点:

public class BaseSpiceActivity extends Activity {
    private SpiceManager spiceManager = new SpiceManager(GsonSpringAndroidSpiceService.class);

    @Override
    protected void onStart() {
        spiceManager.start(this);
        super.onStart();
    }

    @Override
    protected void onStop() {
        spiceManager.shouldStop();
        super.onStop();
    }

    protected SpiceManager getSpiceManager() {
        return spiceManager;
    }  
}

然后我使用该基类来扩展我自己的类,我必须使用spice服务请求。

SimpleTextRequest text = new SimpleTextRequest(placeUrl);   
getSpiceManager().execute(text, "place", DurationInMillis.ONE_MINUTE, new RequestListener<String>() { 

    //Other functions and codes

    }
)

但是当上面的代码被执行时,我得到了以下错误

 E/AndroidRuntime﹕ FATAL EXCEPTION: SpiceManagerThread 0
java.lang.RuntimeException: Impossible to start SpiceManager as no service of class : com.octo.android.robospice.SpiceService is registered in AndroidManifest.xml file !
        at com.octo.android.robospice.SpiceManager.checkServiceIsProperlyDeclaredInAndroidManifest(SpiceManager.java:1287)
        at com.octo.android.robospice.SpiceManager.tryToStartService(SpiceManager.java:1168)
        at com.octo.android.robospice.SpiceManager.run(SpiceManager.java:247)
        at java.lang.Thread.run(Thread.java:856)

我一直在努力解决这个问题。但不幸的是,不可能。请帮帮我。

3 个答案:

答案 0 :(得分:2)

我百分百肯定你在某个地方搞砸了。在您的代码中搜索new SpiceManager(SpiceService.class);,您会发现您确实使用此服务而不是所需的GsonSpringAndroidSpiceService

答案 1 :(得分:2)

您需要在manifest.xml中声明您的服务 喜欢这个

<service android:name=".SampleRetrofitService"
        android:exported="false"/>

答案 2 :(得分:0)

尝试找出使用SpiceManager的位置。 就我而言,我将活动命名为SpiceActivity,其他人则扩展它。 但是robospice库还提供了一个名为SpiceActivity的活动。它使用新的SpiceManager(SpiceService.class)

因此,活动扩展了使用SpiceService的错误SpiceActivity,然后导致错误。