我对 Android 服务类还是有点陌生。我知道您需要使用 startService(intent) 从应用程序启动服务,但是我的问题是我的服务内部有方法。我需要以意图启动服务,然后在我的活动中创建该类的对象,以便我可以调用服务的方法。问题是,当我这样做时,当我以意图启动服务时,我创建了一个服务实例,当我在活动中创建该类的对象时,我创建了另一个服务实例。这意味着当我创建服务的对象时,从 startService(intent) 传递到服务的任何数据都不存在。有什么办法可以解决这个问题,还是我完全滥用了服务类?我可以给出一些代码,但基本上是这样的:
//Create Object of ControlPanel service class.
ControlPanel cPanel = new ControlPanel();
//Create intent for starting ControlPanel service class
Intent controlPanel = new Intent(this, cPanel.getClass());
//Start Service
startService(controlPanel);
我想说你滥用了这个课程:-)。
多次调用 startService() 不会导致启动多个服务。
来自doc:
请求启动给定的应用程序服务。 Intent 可以包含要启动的特定服务实现的完整类名,也可以包含要启动的服务类型的操作和其他字段的抽象定义。如果该服务尚未运行,它将被实例化并启动(如果需要,为其创建一个进程);如果它正在运行,那么它将保持运行状态。
你应该覆盖onStartCommand()以及。如果服务尚未启动,则第一个 startService 调用将启动该服务。无论如何,onStartCommand 将拦截任何进一步的 startService 调用以及您想要发送给它的意图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)