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轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...