我正在写第一份服务。我的活动效果很好,但是当我打电话给我的服务时,却没有。
看起来onCreate()
没有被调用。
我的服务代码:
public class NeglectedService extends Service {
public static final String MY_SERVICE = "android.intent.action.MAIN";
public void onCreate() {
Toast.makeText(this, "Service onCreate...", Toast.LENGTH_LONG).show();
}
}
我甚至没有收到Toast的消息。
这是我的活动
startService(new Intent(NeglectedService.MY_SERVICE));
我的清单
action android:name="android.intent.action.MAIN"
答案 0 :(得分:8)
您输入了类似
的内容吗?<service android:name=".subpackagename.ServiceName"/>
进入你的Android Manifest xml文件?
答案 1 :(得分:4)
看到NeglectedService.MY_SERVICE
只是一个字符串,在startService
来电中,您实际上是在呼叫:
startService(new Intent("android.intent.action.MAIN"));
显然,对您的特定服务没有任何参考,并且不是您想要的。相反,要么为特定的意图过滤器注册服务并将其包括在您的意图中,要么按类调用它:
startService(new Intent(this, NeglectedService.class));
答案 2 :(得分:1)
使用显式意图调用您的服务,而不是使用隐式操作字符串,无论如何它应该更加独特。换句话说,请在您的活动代码中使用它:
startService( new Intent(this, NeglectedService.class) );
希望有所帮助!