关于服务的有效关闭

服务有2种启动方式:bindService和startService。

1,bindService启动之后,会和启动它的应用一同结束:即应用被杀,服务就一同被杀。

2,startService启动之后,一般需要主动stopService,否则该服务会一直运行。如果服务进程被杀,系统会根据需要,错开各服务的重新启动时间,拉起各进程。

在完成服务之后,要主动stopSelf。或由应用监测,及时调用stopService停止服务。

3另外:服务还没启动时调用startService,系统会回调onStartCommand。如果此时return START_STICKY,该服务需要主动停止服务。系统默认也是返回此值。但如果return START_NOT_STICKY,该服务并不需要主动停止,会随启动它的应用一同被杀。

 

public int onStartCommand(Intent intent, int flags, int startId) {

         return START_NOT_STICKY;
};

 

关于是否返回START_NOT_STICKY,可以adb shell dumpsys >dumpsys.txt日志中搜索“stopIfKilled”字串,看是否等于true,可能就是返回了START_NOT_STICKY。

另外记得bindService和unbindService成对出现,startService和stopService成对出现哦。

 

 

文件拷贝、网络下载、播放音乐最好开一个服务去进行。

 

你可能感兴趣的:(android服务,正确关闭服务)