我想知道为什么不建议通过构造函数直接实例化服务类。我找不到任何与之相关的东西。这是一个非常基本的例子:
服务等级:
public class SomeRandomClass extends Service {
private final Context mContext;
public SomeRandomClass(Context context) {
this.mContext = context;
}
}
在主要活动/服务内部:
SomeRandomClass class = new SomeRandomClass(this);
class.someMethod();
此处的帖子指出,直接实例化服务不是一个好主意,应该使用它startService()
来代替,但为什么呢?如果我像这样实例化我的服务,我有一个直接指向服务的变量,我可以调用方法,而不必绑定到它以便能够在我的服务上调用方法。
我可以看到的唯一优点startService()
是 Android 会跟踪我的服务,但缺点是我必须绑定到服务才能与之通信。另一方面,通过直接调用构造函数,我可以轻松进行通信,但是如果我的活动/服务被终止/终止,那么“子”服务也会被终止(我没有使用活动,而是使用其他服务)。
还有什么不鼓励的原因吗?