自动生成不正确的 IntentService 默认构造函数
Auto-generating Incorrect IntentService Default Constructor
Android Studio 有一个有用的快捷方式来自动生成所需的构造函数和覆盖方法 (alt+enter)。
对于 IntentService,Android Studio 自动生成以下默认构造函数,它在 AndroidManifest.xml.
中显示错误
public class MyIntentService extends IntentService {
// Auto-generated by IDE
public MyIntentService(String name) { super(name); }
// This is the correct default constructor!
// public MyIntentService() { super("MyIntentService"); }
@Override
protected void onHandleIntent(@androidx.annotation.Nullable Intent intent) {
...
}
}
AndroidManifest.xml中的错误是
'...MyIntentService' has no default constructor
我知道如何手动更正它,但为什么 IDE 创建了错误的构造函数?这是一个错误吗?有没有办法在 IDE?
中更正此问题?
纯属巧合。我不认为这是一个错误。
IntentService
是一个抽象 class,只有一个构造函数 IntentService(String)
。预期用途是实现 subclass 构造函数调用它提供一个对调试有用的名称。
另一方面,Android Service
s 必须有一个无参数的构造函数,以便框架可以实例化它们。它也适用于 IntentService
s.
IDE 对 IntentService
一无所知。它只看到一个带有 String
参数的构造函数,并提供生成一个兼容的 subclass 构造函数。另一个工具 Android Lint 后来检测到清单中声明的 Service
没有无参数构造函数并发出警告。
请注意,由于当前的后台执行限制,您最好使用其他机制,例如 JobIntentService
而不是 IntentService
。
Android Studio 有一个有用的快捷方式来自动生成所需的构造函数和覆盖方法 (alt+enter)。
对于 IntentService,Android Studio 自动生成以下默认构造函数,它在 AndroidManifest.xml.
中显示错误public class MyIntentService extends IntentService {
// Auto-generated by IDE
public MyIntentService(String name) { super(name); }
// This is the correct default constructor!
// public MyIntentService() { super("MyIntentService"); }
@Override
protected void onHandleIntent(@androidx.annotation.Nullable Intent intent) {
...
}
}
AndroidManifest.xml中的错误是
'...MyIntentService' has no default constructor
我知道如何手动更正它,但为什么 IDE 创建了错误的构造函数?这是一个错误吗?有没有办法在 IDE?
中更正此问题?纯属巧合。我不认为这是一个错误。
IntentService
是一个抽象 class,只有一个构造函数 IntentService(String)
。预期用途是实现 subclass 构造函数调用它提供一个对调试有用的名称。
另一方面,Android Service
s 必须有一个无参数的构造函数,以便框架可以实例化它们。它也适用于 IntentService
s.
IDE 对 IntentService
一无所知。它只看到一个带有 String
参数的构造函数,并提供生成一个兼容的 subclass 构造函数。另一个工具 Android Lint 后来检测到清单中声明的 Service
没有无参数构造函数并发出警告。
请注意,由于当前的后台执行限制,您最好使用其他机制,例如 JobIntentService
而不是 IntentService
。