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, а затем вызывает ошибку.