我想打电话
onDestroy()
android中的服务方法。
我已经在互联网上搜索了很多,很多答案都像是
维修站停止,或者其onDestroy()永远不会调用。
但是我真的需要知道什么时候停止服务。
我的项目是关于音乐播放器的。
因此它使用服务,并且有正在进行的通知。我需要找出服务何时停止?并且需要停止音乐并删除通知。
但是它永远不会显示onDestroy()
的任何日志。谁能帮我替代品吗?如果不是onDestroy()
,那么哪种方法以及如何使用?
编辑:
我不想明确地呼叫onDestroy()
。从运行的应用程序的设备菜单中删除我的应用程序时,我想删除通知。因为当我停止我的应用程序时,onDestroy()
不会呼叫,并且我的通知仍保留在状态栏中。
我已使用此代码开始服务。
Intent playin = new Intent(this, MusicService.class);
startService(playin);
从Service类中,调用:
stopSelf();
来自另一个类,例如您的MainActivity:
Intent i = new Intent(this, ServiceName.class);
stopService(i);
两者都会停止您的服务。确保返回START_NOT_STICKY
,以使服务不会再次启动。
[当您要停止服务时,只需发出如下所示的停止服务的意图。
Intent intent = new Intent();
intent.setClass(getApplicationContext(), YourService.class);
stopService(intent);
这是强制停止服务。以这种方式停止服务时,可以确保由Android框架调用onDestroy方法。
希望这有助于解决您的问题。
我想在android中调用
onDestroy()
的Service
方法。
public void onDestroy()
由系统调用以通知服务它不再被使用,并且正在被删除。该服务应清除其拥有的所有资源(线程,已注册的接收者等)。返回时,那里将不再有对该服务对象的调用,它实际上是死。不要直接调用此方法。
但是您可以检查该服务是否正在运行。
我需要找出服务何时停止?并且需要停止音乐和删除通知。
使用以下方式-
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)
调用它。
参考: