我注意到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;
}
最佳答案
如果您遇到的情况相同,我的Service
将启动并运行正常(onCreate()
和onServiceConnected()
都被调用),但从未调用过onStartCommand(Intent,int)
。我发现这是因为系统启动了我的Service
而不是我在代码中显式启动了Service
。根据docs:
因此,我必须在代码中显式调用startService(new Intent(context, MyService.class))
才能触发onStartCommand(Intent,int)
。请注意,这样做不会重启系统创建的服务,也不会创建该服务的新实例。