如何杀死前台服务

时间:2014-04-28 13:30:02

标签: android service persistent foreground

我正在开发一个需要使用前台服务的应用程序。该服务正常工作,但我无法杀死它。首先,我试图通过使用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;
       ...

2 个答案:

答案 0 :(得分:0)

如果您的服务不适用于" 绑定"对于您的任何客户,明确的stopService(Intent)电话就足以终止您的服务

如果您的服务用于绑定,并且您已成功通过拨打bindService(Intent, ServiceConnection, int)绑定服务,则必须从绑定的客户端拨打unbindService(..)

如果您的服务同时支持绑定和启动,那么您必须使用混合方法来阻止它。

  1. 绑定服务:要停止以前的bound服务,您必须解除绑定以前绑定服务的所有客户。< / p>

  2. 已启动服务:要停止使用startService(Intent)启动的服务,您必须致电stopService(Intent)。这就足够了,不需要用任何命令启动它。

  3. 混合(绑定和启动)服务:您必须明确调用stopService(Intent)并取消绑定所有客户端。只有当您的所有客户都退出服务并且已调用stopService(Intent)时,该服务才会实际停止。

  4. 如果您不确定自己提供何种服务,请阅读Services guide,说明情况令人满意。

答案 1 :(得分:0)

我的错误,正在调用onDestroy,但我无法看到它......