gpt4 book ai didi

Android Service 多实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:56 25 4
gpt4 key购买 nike

我对 Android 服务类还是有点陌生​​。我知道您需要使用 startService(intent) 从您的应用程序启动服务,但我的问题是我的服务中有方法。我需要以 Intent 启动服务,然后在我的 Activity 中创建该类的对象,以便我可以调用服务的方法。问题是当我这样做时,当我以 Intent 启动服务时创建一个服务实例,当我在我的 Activity 中创建类的对象时创建另一个服务实例。这意味着当我创建服务对象时,从 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 :

Request that a given application service be started. The Intent can either contain the complete class name of a specific service implementation to start, or an abstract definition through the action and other fields of the kind of service to start. If this service is not already running, it will be instantiated and started (creating a process for it if needed); if it is running then it remains running.

你应该覆盖 onStartCommand()以及。如果服务尚未启动,则第一个 startService 调用会启动该服务。在任何情况下,onStartCommand 都会拦截任何进一步的 startService 调用以及您要发送给它的 Intent 。

关于Android Service 多实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com