我有一个大型短信应用程序,我正在使用服务来处理大多数操作。该应用程序有大约 10 个不同的活动,它们绑定到服务以执行不同的操作。每个活动都在 onResume 中绑定到服务,并在 onStop 中取消绑定(我也将此处的引用设为无效)。该服务还接收 startService 命令以在应用程序首次打开时启动。
我正在尝试实现一个终止开关,以便当从某个号码发送带有某个关键字的文本时,它将关闭应用程序,除了单独的活动和许可服务以侦听重新激活文本。
主要的短信服务也作为前台服务运行,因此它显示在通知栏中。现在,当它收到停用文本时,它永远不会从通知栏中删除自己。我可以通过运行 stopForeground() 手动将其取出,但这只会将其从通知栏中取出。如果应用程序接收到激活文本,则服务会获取 onStartCommand,但不会获取 onCreate(我将其设置为前台服务)。
该服务似乎也从未调用 onDestroy() 方法。我在这里和其他地方读到过,当您使用 startService 并绑定到服务时,您必须首先确保取消绑定服务,然后运行 stopService。正如我上面所说,我在绑定 onStop 的所有活动中取消绑定服务,因此如果这些活动都不可见,则不应绑定它们。我也打电话给 stopService 。
似乎服务还保留着一些东西,但我不知道是什么。我在此服务中存在 6 个单独的线程,我确保在尝试停止它之前将其销毁(以及取消注册短信接收器)。
关于如何进一步诊断的任何想法?