4

我正在寻找一种在没有课程的情况下启动 Android 服务的方法。我发现了很多例子,比如:

startService(new Intent(this, TheService.class));

我不想将服务类放入其中并且在我手动停止它之前仍然让服务运行。

我不需要服务的接口,因为它只应该打开一些没有任何参数的套接字。

服务运行时间不应依赖于应用程序的运行时间:第一个需要服务的应用程序应该启动它,然后它应该运行直到它被手动停止。

所以我不能使用BroadcastReceiver,因为它们的寿命很短。绑定到服务将导致取消绑定,从而停止服务(我不想要)。

有没有办法在没有服务的 .class 的情况下使用启动服务?替代方案:有没有办法绑定到不将生命周期链接到已启动应用程序的服务?

4

1 回答 1

7

您可以按名称启动它。像这样:

public static void startYourService(Context context) {
    Intent i = new Intent("com.whatever.servicename.YOUR_ACTION_NAME");
    i.setPackage(context.getPackageName());
    context.startService(i);
}

您需要使用该服务向 apk 添加一个意图过滤器:

<service
    android:name="com.whatever.servicename"
    android:exported="true">
    <intent-filter>
        <action android:name="com.whatever.servicename.YOUR_ACTION_NAME" />
    </intent-filter>
</service>
于 2013-02-18T07:06:05.567 回答