根据this博客文章和 onStartCommand() 的文档,如果您具有Service,则应实现onStart()和onStartCommand(),在2.0及更高版本中,仅会调用onStartCommand()。似乎并非如此,并且在我的服务中都被调用。这是一个问题,因为它试图做两次工作,所以如果操作系统版本小于2.0,我必须在onStart()中添加一个检查,以使其不执行任何操作。这似乎是一个hack和一个bug。其他人是否遇到过这种情况,或者我可能有问题吗?我直接从示例中剪切并粘贴了代码。

@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);
}

最佳答案

在该博客文章中,未调用onStartonStartCommand的基本实现。有压力地,其中一个正在调用另一个。

10-08 17:25