我正在开发一个Android应用程序,它运行一系列异步传感器扫描,例如获取附近蓝牙设备的MAC地址列表,获取手机的当前位置(GPS),并记录周围噪音的音频样本。每当每次扫描完成时,我想要一个服务来处理将收集到的数据发送到REST服务(使用http和REST)。
我面临的问题是,我是应该实现自己的自定义服务,还是应该使用IntentServce来处理上传数据的多个请求(使用‘startService()’发送的意图),因为我希望100%确定最终会将找到的数据发送到want服务(如果互联网连接可用)。
如果Android决定杀死我的IntnetService,或者用户在处理它的请求工作队列时强行杀死它,我会丢失待决请求队列吗?即,我是否需要保存工作队列的状态(因此被迫在不使用IntentService的情况下自己实现服务)?
发布于 2012-06-06 21:10:25
如果安卓决定杀死我的IntnetService,或者用户在处理它的请求工作队列时强行杀死它,我会丢失挂起的请求队列吗?
如果用户重新启动他们的设备,您的队列将会消失。否则,至少在理论上,从onStartCommand()返回START_REDELIVER_INTENT (这是IntentService的默认IIRC)应该会给出任何未处理的Intent命令。
也就是说,如果你想“百分之百确定”命令被处理,我建议你创建你自己的持久工作队列(例如,数据库表)。使用IntentService more作为请求来处理所有未完成的持久性工作队列事件(如果有)。使用BOOT_COMPLETED BroadcastReceiver处理重新启动的情况,告诉您的IntentService处理由于重新启动而留下的任何未完成的命令。
https://stackoverflow.com/questions/10914681
复制相似问题