调用service时,运行onCreate但不运行onStartCommand()

时间:2016-05-19 20:38:40

标签: android service

我正在处理代码,以便在android完成启动时调用服务。

该服务在名为myService的manifest.xml中定义。

在myService类中,代码覆盖了两个方法:

@Override
public void onCreate(){

    myInit();

    Log.d(TAG, "onCreate: ");

}


public int onStartCommand(){

    Log.d(TAG, "onStartCommand first line");

    startScheduler();

    Log.d(TAG, "onStartCommand: ");

    //This service is running in the background all the time. Therefore, return sticky.
    return START_STICKY;
}

在运行时,logcat可以看到" onCreate"但从来没有" onStartCommand"。我通读开发者网站,但无法弄清楚原因。

非常感谢您的评论和建议。

1 个答案:

答案 0 :(得分:2)

onStartCommand takes an Intent and two integer parameters

尝试用以下方法替换您的方法:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(TAG, "onStartCommand first line");

    startScheduler();

    Log.d(TAG, "onStartCommand: ");

    //This service is running in the background all the time. Therefore, return sticky.
    return START_STICKY;
}

作为一般规则,如果您认为自己重写或实施方法,请始终使用@Override对其进行注释。如果你错过了一个参数,得到了错误的名字,那将导致编译错误等等。