4

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

  • 机器人香料

  • 格森

  • 和 Android 的 Spring

为此,在我的 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;
    }  
}

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

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)

我一直在尝试解决这个问题好几个小时。但很遗憾做不到。请帮帮我。

4

3 回答 3

2

我100%肯定你在某个地方搞砸了。在你的代码中搜索new SpiceManager(SpiceService.class);,你会发现你确实使用了这个服务而不是你想要的GsonSpringAndroidSpiceService.

于 2014-11-01T12:45:25.060 回答
2

您需要在 manifest.xml 中声明您的服务 像这样

<service android:name=".SampleRetrofitService"
        android:exported="false"/>
于 2015-06-27T06:08:20.300 回答
0

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

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

于 2015-06-29T08:41:31.930 回答