Android服务onStartCommand从未调用过

时间:2012-10-17 06:56:54

标签: android android-service

我注意到Service.START_STICKY不起作用,当我仔细观察时,我看到onCreate()正在运行但是没有调用onStartCommand。

任何想法为什么?

    @Override
public void onCreate() {

    mGlobalData = GlobalData.getInstance();
    mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    if (mTimer == null)
        mTimer = new Timer();

    Log.e(TAG, "onCreate()");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    int t = START_STICKY;
    Log.e(TAG, "call me redundant BABY!  onStartCommand service");

    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return t;
}

2 个答案:

答案 0 :(得分:13)

如果您遇到相同的情况,我的Service启动并运行正常(onCreate()onServiceConnected()都被调用)但onStartCommand(Intent,int)从未被调用过。我发现它是因为系统启动了Service而不是我在代码中明确启动Service。根据{{​​3}}:

  每次客户端通过调用onStartCommand(Intent,int)

明确启动服务时,系统都会调用<{> {startService(Intent)

因此,我必须在代码中明确调用startService(new Intent(context, MyService.class))才能触发onStartCommand(Intent,int)。请注意,这样做不会重新启动系统创建的服务,也不会创建该服务的新实例。

答案 1 :(得分:1)

尝试在android.os.Debug.waitForDebugger();的末尾插入行onCreate()。在我这样做之前,调试器没有达到onStartCommand()的断点。