2013-02-14 3 views
3

Я хочу запустить сервис статическим способом. Так что с моей деятельности я называюonСоздание службы android не вызвано

SpeechActivationService.makeStartServiceIntent(
       this.getApplicationContext(), 
       "WordActivator"); 

Вот фактический класс, который простирается от услуг класса http://dpaste.com/hold/928115/ Как вы можете видеть, что есть несколько точек журнала, например, в методе onCreate.

Это не зарегистрировано. Только если я поместил лог-текст в метод makeStartServiceIntent, он появится, однако не в методе onCreate.

Вот makeStartServiceIntent метод:

public static Intent makeStartServiceIntent(Context context, 
     String activationType) {   
    Intent i = new Intent(context, SpeechActivationService.class); 
    i.putExtra(ACTIVATION_TYPE_INTENT_KEY, activationType); 
    return i; 
} 

В файле манифеста у меня есть

<service android:name="root.gast.speech.activation.SpeechActivationService"/> 

Любые идеи, почему услуга не началась?

ответ

8

Ваш makeStartService() просто создает для вас намерение. На самом деле вы, похоже, не стреляете, чтобы начать службу. Попробуйте как этот

Intent i = SpeechActivationService.makeStartServiceIntent(this,"WordActivator"); 
startService(i); 

Обратите внимание, что если this.getApplicationContext() работы вы, вероятно, уже внутри Context объекта так просто с помощью thisдолжны работать также.

+0

Да, я собирался спросить, действительно ли он что-то делает с намерением ... – dmon

10

Помимо вы не проводки кода, показывающего startService(), это похоже на название пакета Service в манифесте не соответствует вашему SpeechActivationService класса (предполагая ссылку кода Размещенной Вами фактический SpeechActivationService класса в вашем проекте, и а не только класс, который вы скопировали с).

<service android:name="com.mkyong.android.SpeechActivationService"/> 
Смежные вопросы