5

静的な方法でサービスを開始したい。だから私の活動から私は電話します

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"/>

サービスが開始されない理由はありますか?

4

2 に答える 2

12

を示すコードを投稿していないことを除けば、マニフェスト内startService()のあなたのパッケージ名がクラスと一致していないようです(投稿したコードリンクがプロジェクトの実際のクラスであり、コピー元のクラスだけではないと仮定します)。ServiceSpeechActivationServiceSpeechActivationService

<service android:name="com.mkyong.android.SpeechActivationService"/>
于 2013-02-14T15:06:10.510 に答える
9

あなたはあなたmakeStartService()のためにインテントを作成するだけです。あなたは実際にサービスを開始するためにその意図を解き放っていないようです。このようにしてみてください

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

動作する場合this.getApplicationContext()は、すでにContextオブジェクト内にある可能性が高いため、単に使用するだけでも動作するthis はずです。

于 2013-02-14T14:54:27.960 に答える