gpt4 book ai didi

java - 如何在 Android 中以编程方式注册服务?

转载 作者:行者123 更新时间:2023-12-01 16:42:23 27 4
gpt4 key购买 nike

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/

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