怎么把onStartCommand里返回了START_REDELIVER_INTENT的Servcie停止掉?

charlesxu 2015-06-05 08:06:23
一个Servcie的onStartCommand里返回了START_REDELIVER_INTENT,是因为如果这个Service被系统Kill了或者app被Kill了,Service还能自动重启。

但是现在用户如果修改参数后再次点击“启动服务按钮”,我需要关闭上一次启动的Service,重新传Intent再开启一个新的Service。但是因为这个Servcie返回的是START_REDELIVER_INTENT,Servcie停止后又会启动?加上新开的就是2个,再点就又多一个。

怎么既能保证始终有一个Servcie在后台,又不会出现重复的Service?

启动Servcie的Activity

public class mainactivity extends Activity{
btn_start.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent Intent1 = new Intent(this, bbService.class);
//我现在先停上次启动的Servcie,再重新开启
this.stopService(Intent1);
this.startService(Intent1);
}
}
}


Service

public class bbService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Client mClient = new Client(this, mgeo);
//这里返回START_REDELIVER_INTENT,那每次停止Servcie后都会再启动一个新的。
//那这个Servcie就不会停止了,用户会启动多个相同的Service
return START_REDELIVER_INTENT;
}
}
...全文
521 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
可乐淘 2016-10-13
  • 打赏
  • 举报
回复
在需要service结束的地方,添加 stopSelf()方法
xiaoguidan1234 2015-10-21
  • 打赏
  • 举报
回复
然而我做了一个例子,stopService之后并不会重新创建service对象。我觉得应该是只有在程序异常被kill的时候才会重新创建service对象,正常的停止是不会的
benben002 2015-08-05
  • 打赏
  • 举报
回复
想办法设计成单子模式

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧