Robospice Невозможно запустить SpiceManager, поскольку он не обслуживает класс

Я пытаюсь использовать следующие библиотеки для разработки моего приложения.

  • Robospice

  • Gson

  • и весна на андроид

Для этого в моем файле 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" />

Теперь я создал базовый класс, который используется как Базовая активность. И я сделал это следующим образом:

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)

Я пытался решить эту проблему в течение многих часов. Но, к сожалению, не смог. Пожалуйста, помогите мне.

3 ответа

Вы должны объявить свой сервис в файле manifest.xml

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

Я на 100% уверен, что вы где-то напутали. Ищи new SpiceManager(SpiceService.class); в вашем коде, и вы узнаете, что вы используете этот сервис вместо желаемого GsonSpringAndroidSpiceService,

Попробуйте выяснить, где используется SpiceManager. В моем случае я назвал активность SpiceActivity, а другие ее расширяют. Но библиотека robospice также предлагает действие под названием SpiceActivity. И он использует новый SpiceManager (SpiceService.class)

Таким образом, активность расширяет неправильную SpiceActivity, которая использует SpiceService, а затем вызывает ошибку.

Другие вопросы по тегам