调用服务onDestroy()

djk*_*djk 4 android android-service

我想打电话

的onDestroy()

android中的服务方法.

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

服务部队停止或以某种方式其onDestroy()永远不会打电话.

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

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

所以它使用服务并且持续通知.我需要找出什么时候服务停止?并需要停止音乐并删除通知.

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

编辑:

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

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

jay*_*j95 9

Service类中,调用:

stopSelf();

从另一个类中,例如您的MainActivity:

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

这两个都将停止您的服务.确保您正在返回,START_NOT_STICKY以便服务不会再次启动.

  • 将`stopSelf()`调用`onDestroy()`? (3认同)

My *_*God 2

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

  • 不要直接调用该方法

公共无效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;
}
Run Code Online (Sandbox Code Playgroud)

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

参考:

1)服务 onDestroy()

2)如何检查服务是否在 android 中运行