onStart()和onStartCommand()仍在2.0及更高版本中调用

sro*_*rda 6 android android-service

根据这篇博客文章以及onStartCommand()如果你有服务的文档,你应该实现onStart()和onStartCommand(),而在2.0及更高版本中只调用onStartCommand().似乎情况并非如此,并且在我的服务中正在调用.这是一个问题,因为它试图完成两次工作,所以我不得不在onStart()中添加一个检查,如果操作系统版本<2.0则不做任何事情.这似乎是一个黑客和一个错误.其他人经历过这个或者我可能有错吗?我从样本中剪切并粘贴了代码.

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
  Util.log(mCtx, "AlerterService", "onStartCommand() called");
  handleStart(intent);
  return super.onStartCommand(intent, flags, startId);
}

public void onStart(Intent intent, int startId) {
    Util.log(mCtx, "AlerterService", "onStart() called");       
    handleStart(intent);
    super.onStart(intent, startId);
}
Run Code Online (Sandbox Code Playgroud)

son*_*zhw 11

源代码onStartCommand()是:

    public int onStartCommand(Intent intent, int flags, int startId) {
        onStart(intent, startId);
        return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY;
    }
Run Code Online (Sandbox Code Playgroud)

所以它仍然会打电话 onStart();


K-b*_*llo 3

在那篇博客文章中,没有调用onStart和的基本实现。onStartCommand不出所料,其中一个正在给另一个打电话。