Service启动方式之startService
详见:http://www.2cto.com/kf/201302/190157.html
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理.这是大家常用的方式,但是一定要注意下面这个返回值:
START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
案例:本人通过startService(Intent)来传递socket消息时,使用START_REDELIVER_INTENT作为onStartCommand的返回值时,出现问题如下:
1、当通过强制退出(即杀进程)的方式关闭app后,再重新启动app;此时,系统重启服务会将上一次杀死进程钱所有发送的消息都发送一次,
这个是不可忍受的,随时导致app异常。
本文详细介绍了Android开发中Service的启动方式,特别是使用startService(Intent)方法时,如何正确地使用onStartCommand的返回值START_REDELIVER_INTENT来避免消息重复发送的问题。通过案例分析,展示了当应用被强制退出后,系统如何自动重启服务并重新发送未处理的消息,导致应用异常的情况,并提出解决方案。
7422

被折叠的 条评论
为什么被折叠?



