2011-04-05 214 views
59

这里我试了一下简单的服务程序。启动服务工作正常,并生成吐司,但停止服务不。这个简单的服务的代码如下:在android中停止服务

public class MailService extends Service { 
    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    public void onCreate(){ 
     super.onCreate(); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 
    } 
    public void onDestroyed(){ 
     Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show(); 
     super.onDestroy(); 
    } 
} 

从那里该服务被称为活动的代码如下:

public class ServiceTest extends Activity{ 
    private Button start,stop; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.service_test); 

     start=(Button)findViewById(R.id.btnStart); 
     stop=(Button)findViewById(R.id.btnStop); 

     start.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       startService(new Intent(ServiceTest.this,MailService.class)); 
      } 
     }); 
     stop.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       stopService(new Intent(ServiceTest.this,MailService.class)); 
      } 
     }); 
    } 
} 

帮我看看其生成停止按钮停止服务在onDestroy()方法中敬酒。我已经在这里看到很多关于停止服务问题的帖子,但是并不满意,因此发布了新的问题。希望得到满意的答复。

+6

'stopService(serviceIntent)'不起作用吗? – 2011-04-05 17:43:21

+0

*“另外,请记住,被销毁的服务的确切时间取决于Android,并且可能不会立即生效。”*来自:http://stackoverflow.com/questions/2176375/android-service-wont-stop/2176415#2176415 – bigstones 2011-04-05 17:47:07

+1

@chris:我认为stopService(serviceIntent)方法,因为我实施上面没有工作,因为在onDestroy()吐司没有发生停止按钮单击。 – 2011-04-06 07:09:42

回答

39
onDestroyed() 

onDestroy() 

错名字你只能在这个问题上还是在你的代码也犯了一个错误?

+0

是的,后来我从头做了我的代码,它运行良好。任何耶可能是我以前的代码中的那个问题,其他人我也没有注意到。任何方式谢谢:)因为它也对其他的帮助。 – 2012-01-26 09:03:25

+2

@RaviBhatt那么你有没有成功停止服务?如果是的话,那么你可以分享怎么做? – suraj 2012-03-31 07:47:12

+0

@suraj [文档怎么样?](http://developer.android.com/reference/android/app/Service.html#ServiceLifecycle) – kreker 2012-04-03 23:25:36

9

此代码的工作对我来说:检查这link
这是我的代码时,我停下来,在活动

case R.id.buttonStart: 
    Log.d(TAG, "onClick: starting srvice"); 
    startService(new Intent(this, MyService.class)); 
    break; 
case R.id.buttonStop: 
    Log.d(TAG, "onClick: stopping srvice"); 
    stopService(new Intent(this, MyService.class)); 
    break; 
} 
} 
} 

而在服务类启动服务:

@Override 
public void onCreate() { 
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onCreate"); 

    player = MediaPlayer.create(this, R.raw.braincandy); 
    player.setLooping(false); // Set looping 
} 

@Override 
public void onDestroy() { 
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onDestroy"); 
    player.stop(); 
} 

编码快乐!

+0

谢谢!清晰简单 – Herman 2016-11-25 19:12:14

4

停止服务我们必须使用方法stopService()

Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class); 
    //startService(myService); 
    stopService(myService); 

然后在服务方法onDestroy()被称为:

@Override 
    public void onDestroy() { 

     Log.i(TAG, "onCreate() , service stopped..."); 
    } 

这里是一个complete example包括如何停止服务。