如何停止以自定义意图启动的 Android 服务

Posted

技术标签:

【中文标题】如何停止以自定义意图启动的 Android 服务【英文标题】:How to stop Android Service started with a custom intent 【发布时间】:2021-06-24 22:11:34 【问题描述】:

我在 android Studio 中构建了一个名为 MService 扩展服务的类,我这样启动服务:- 在与按钮关联的 onClick 内部-

Intent serviceIntent = new Intent(getApplicationContext(), MService.class);
serviceIntent.putExtra("ID", "1"); 
startService(serviceIntent);

服务onStartCommand 方法午餐并且工作得很好..

问题是当按钮单击时我不知道如何结束服务,我尝试这样做:

stopService(new Intent(getApplicationContext(), MService.class));

在 onClick 方法中, onDestroy 午餐,但服务仍在运行 我怎样才能阻止它?

【问题讨论】:

【参考方案1】:

在 onClick 方法中,onDestroy 已启动,但服务仍在运行

如果您的服务的onDestroy() 被调用,那么之后,该服务就没有运行。 您的代码可能仍在运行。

如果您在服务中启动事物,例如后台线程,您的工作是停止它们并清理它们,通常在您的 onDestroy() 方法中。

【讨论】:

我能问一个愚蠢的问题吗?如果我有多个用户通过不同的用户名使用该应用程序并且我有一个服务类..如果其中一个停止了服务,它不会停止其他用户的服务。我对吗?我是这个领域的新手,谢谢 @lolowa:如果“多个用户”是指 Android 设备上的多个帐户...我没有在服务的上下文中使用过它,所以我不完全确定是什么行为会。如果“多用户”是指您的应用程序有自己的用户概念并让应用程序在他们之间切换……从操作系统的角度来看,这并不重要。服务是自然的单例,因此您的应用只会有一个服务实例。

以上是关于如何停止以自定义意图启动的 Android 服务的主要内容,如果未能解决你的问题,请参考以下文章

Android 自定义启动器 startActivity() 阻止 BOOT_COMPLETED 意图

如何获得在android中停止服务的意图

如何停止自定义android服务?

使用自定义 Google Now 命令启动 Android 应用

Linux如何在RAM缓冲区中录制声音并以自定义延迟播放音频

使用自定义类启动浏览器意图 - 找不到活动