我有Android服务重启的问题.我正在构建针对API版本7并在具有Android 2.3.3的设备上运行.
问题是,当我的服务被系统杀死并稍后重新启动时,只onCreate()调用我的服务.代码输入onStartCommand()未执行.如果我是第一次启动我的应用程序,onStartCommand()通常会执行代码并且一切正常,直到系统终止我的服务,然后服务将无法正确重启.
文档说,onStartCommand()在重新启动服务时始终会调用它.在服务重启的情况下,onStartCommand()应该使用null intent调用.这不是我的情况.
知道为什么会这样吗?
根据这篇博客文章以及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)