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

Android 码拜 8年前 (2017-04-21) 1266次浏览
一个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;
	}
}
解决方案

20

想办法设计成单子模式

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么把onStartCommand里返回了START_REDELIVER_INTENT的Servcie停止掉
喜欢 (0)
[1034331897@qq.com]
分享 (0)