我想以静态方式启动服务。所以从我的活动中我打电话
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"/>
为什么服务没有启动的任何想法?
答案 0 :(得分:10)
除了您没有发布显示startService()
的代码之外,清单中Service
的包名与您的SpeechActivationService
类不匹配(假设代码您发布的链接是项目中的实际SpeechActivationService
类,而不仅仅是您从复制的类)。
<service android:name="com.mkyong.android.SpeechActivationService"/>
答案 1 :(得分:8)
您的makeStartService()
只会为您创建一个意图。您似乎并没有实际启动该服务。试试这个
Intent i = SpeechActivationService.makeStartServiceIntent(this,"WordActivator");
startService(i);
请注意,如果this.getApplicationContext()
有效,您可能已经在Context
个对象中,因此只需使用this
也可以。