gpt4 book ai didi

android - 为什么不在Android中直接实例化服务呢?

转载 作者:太空狗 更新时间:2023-10-29 16:19:24 25 4
gpt4 key购买 nike

我想知道为什么不推荐通过构造函数直接实例化服务类。我找不到任何与之相关的东西。这是一个非常基本的示例:

服务类:

public class SomeRandomClass extends Service {

private final Context mContext;

public SomeRandomClass(Context context) {
this.mContext = context;
}
}

在主 Activity/服务中:

SomeRandomClass class = new SomeRandomClass(this);
class.someMethod();

帖子here指出直接实例化服务不是一个好主意,应该使用 startService() 代替,但为什么呢?如果我像这样实例化我的服务,我就有了一个直接指向该服务的变量,我可以调用方法而不是必须绑定(bind)到它才能调用我的服务上的方法。

我可以看到使用 startService() 的唯一优点是 Android 会跟踪我的服务,但缺点是我必须绑定(bind)到服务才能与之通信。另一方面,通过直接调用构造函数,我可以轻松进行通信,但如果我的 Activity/服务被终止/终止,“子”服务也会被终止(我没有使用 Activity ,而是使用其他服务)。

还有什么原因不鼓励吗?

最佳答案

如果您想使用 Services 提供的功能,那么 SomeRandomClass 成为 Service 才有意义。为了获得这些设施,您需要正确启动服务。

但您似乎不想使用这些设施(自动后台生命周期管理,可能在单独的进程中)。您似乎想要的只是一个普通的旧类,没有扩展服务。

关于android - 为什么不在Android中直接实例化服务呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860453/

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