我正在开发一个需要使用前台服务的应用程序。该服务正常工作,但我无法杀死它。首先,我试图通过使用stopService来杀死,然后我看到一个主题,人们说使用startService作为关键来杀死服务:
在我的活动中:
Intent i = new Intent(this, MyService.class);
i.putBooleanExtra("killService",true);
在我的服务onStartCommand中:
if(intent.getBooleanExtra("killService",false))
{
stopForeground(true);
stopSelf();
....
我想在用户按下我活动的特定按钮时停止服务:
public void onClick(View v)
{
switch(v.getId)
{
case R.id.myButton:
(here i want to kill the service)
break;
...
答案 0 :(得分:0)
如果您的服务不适用于" 绑定"对于您的任何客户,明确的stopService(Intent)
电话就足以终止您的服务
如果您的服务用于绑定,并且您已成功通过拨打bindService(Intent, ServiceConnection, int)
绑定服务,则必须从绑定的客户端拨打unbindService(..)
。
如果您的服务同时支持绑定和启动,那么您必须使用混合方法来阻止它。
绑定服务:要停止以前的bound服务,您必须解除绑定以前绑定服务的所有客户。< / p>
已启动服务:要停止使用startService(Intent)
启动的服务,您必须致电stopService(Intent)
。这就足够了,不需要用任何命令启动它。
混合(绑定和启动)服务:您必须明确调用stopService(Intent)
并取消绑定所有客户端。只有当您的所有客户都退出服务并且已调用stopService(Intent)
时,该服务才会实际停止。
如果您不确定自己提供何种服务,请阅读Services guide,说明情况令人满意。
答案 1 :(得分:0)
我的错误,正在调用onDestroy,但我无法看到它......