什么是
Android服务方面的START_STICKY_COMPATIBILITY标志.文档提到了它
compatibility version of START_STICKY that does not guarantee that
onStartCommand(Intent,int,int) will be called again after being
killed.
什么是兼容版本?如果它是START_STICKY的版本,那么为什么不能保证对onStartCommand()的调用?为什么有人会在它不能保证在服务被杀死后调用onStartCommand()时使用它?
解决方法
默认实现
onStartCommand
:
public @StartResult int onStartCommand(Intent intent,@StartArgFlags int flags,int startId) { onStart(intent,startId); return mStartCompatibility ? START_STICKY_COMPATIBILITY : START_STICKY; }
mStartCompatibility
是这样确定的:
mStartCompatibility = getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.ECLAIR;
在Service
的1.6版本中,仅onStart没有onStartCommand的实现.
在2.1版本中,他们不推荐使用onStart
.
注意参数的不同,在那里引入了标志.
通过这样做,他们将保持与旧系统(PRE Eclair)的兼容性,旧系统期望旧值,并且它们也支持新系统中的新行为.