android – 服务中的START_STICKY_COMPATIBILITY

前端之家收集整理的这篇文章主要介绍了android – 服务中的START_STICKY_COMPATIBILITY前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
什么是 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)的兼容性,旧系统期望旧值,并且它们也支持新系统中的新行为.

猜你在找的Android相关文章