调用服务onDestroy()

时间:2014-07-18 12:47:34

标签: android android-service

我想打电话

  

的onDestroy()

android中的服务方法。

我已经在互联网上搜索了很多,很多答案就像是

服务部队停止或以某种方式停止onDestroy()。

但我真的需要知道什么时候停止服务。

我的项目是关于音乐播放器。

因此它使用服务并且持续通知。 我需要找出什么时候服务停止?并需要停止播放音乐并删除通知。

但它从未显示onDestroy()的任何日志。 任何人都可以帮助我什么是它的替代品?如果不是onDestroy()那么哪种方法又如何?

编辑:

我不想明确地调用ondestroy。我想从运行应用程序的设备菜单中删除我的应用程序时删除通知。因为当我停止我的申请时,ondestroy不会打电话,我的通知仍然在状态栏中。

我已使用此代码启动了我的服务。 Intent playin = new Intent(this,MusicService.class); startService(弹唱);

3 个答案:

答案 0 :(得分:9)

服务类中,请致电:

stopSelf();

来自其他课程,例如 MainActivity

Intent i = new Intent(this, ServiceName.class); stopService(i);

这两项都将停止您的服务。确保您返回START_NOT_STICKY,以便服务不会再次重新启动。

答案 1 :(得分:2)

  

我想在android中调用onDestroy() Service方法。

  • 请勿直接调用此方法
  

public void onDestroy()

     

系统调用以通知服务它已不再使用   正被删除。该服务应该清理它拥有的任何资源   (此时,线程,注册接收器等)。回来后,那里   将不再调用此Service对象,它是有效的   死。不要直接调用此方法。

但是,您可以检查服务是否正在运行。

  

我需要找出服务何时停止?并需要停止音乐和   删除通知。

使用以下方式 -

private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (serviceClass.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

然后使用 - isMyServiceRunning(MyService.class)调用它。

参考:

1)Service onDestroy()

2)how-to-check-if-a-service-is-running-in-android

答案 2 :(得分:2)

当您想要停止服务时,只需触发意图停止服务,如下所示。

Intent intent = new Intent();
intent.setClass(getApplicationContext(), YourService.class);
stopService(intent);

这是强制停止服务。当你以这种方式停止服务时,它保证了android框架调用onDestroy方法。

希望这有助于解决您的问题。