- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Android版本:Android 10
如果“AndroidManifest.xml”中没有定义TestService,那么我们就无法使用“context.startService(new Intent(context, TestService.class))”来启动该服务。
应该和服务注册有关。
案例研究:我想在运行时加载一个jar,并且该jar包含一些服务。我不想在“AndroidManifest.xml”中定义所有服务。
问题 1:是否可以在启动 TestService 之前以编程方式注册它?如果是的话怎么办?
问题 2:如果动态服务注册不可能,那么为什么Android可以动态注册AndroidManifest.xml中定义的服务呢?
AndroidManifest.xml
<application
...
<!--
<service
android:name=".service.TestService"/>
-->
...
</application>
TestService.java
public class TestService extends IntentService {
...
protected void onHandleIntent(@Nullable Intent intent) {
System.out.println("------ TestService onHandleIntent ------");
}
...
}
TestActivity.java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
test(getContext());
}
});
public static void test(Context context) {
context.startService(new Intent(context, TestService.class));
}
谢谢。
最佳答案
查看此处以获取更多详细信息https://developer.android.com/guide/topics/manifest/manifest-intro#components
For each app component that you create in your app, you must declare a corresponding XML element in the manifest file: If you subclass any of these components without declaring it in the manifest file, the system cannot start it.
基本上,当您启动任何 Android 组件时,它是由 Android 系统启动的,而不是在您的应用程序内部。额外的 Android 支持从其他应用程序启动 Activity 或绑定(bind)服务,因此您必须在 AndroidManifest 中声明以告诉其他应用程序
关于java - 如何在 Android 中以编程方式注册服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61838175/
我是一名优秀的程序员,十分优秀!