android相关问题 - Android 如何让引入的lib库中的Service在系统中唯一
巴扎黑
巴扎黑 2017-05-16 13:21:35
0
1
555

首先,我有一个lib库,库里面定义了以个Service:

<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <service
        android:name=".SharedService"
        android:process="com.lib.aidl.SharedService"
        android:enabled="true"
        android:exported="true">
    </service>
</application>

现在,加入有两个app都引入了这个库,然后在各自的代码里都调用了:

startService(new Intent(context, SharedService.class))

我现在想的是系统中应该只有一个SharedService的实例,在进程com.lib.aidl.SharedService中。

但是实际情况是有两个SharedService的实例,它们都在进程名为com.lib.aidl.SharedService的进程中,但是进程id是不一样的。这是为什么?

我现在想让系统中仅出现一个SharedService的实例,当第二次调用startService时回调onStartCommand方法,这个可以做到么?

巴扎黑
巴扎黑

全部回复(1)
洪涛

雷雷

替换成

雷雷

尝试

注意,加了个':'

运行服务的进程的名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包具有相同的名称。 <应用>元素的 process 属性可以为所有组件设置不同的默认值。但是组件可以使用自己的进程属性覆盖默认值,从而允许您将应用程序分布在多个进程中。
如果分配给该属性的名称以冒号(“:”)开头,则一个新进程是该应用程序私有的在需要时创建并且服务在该进程中运行。如果进程名称以小写字符开头,则服务将在该名称的全局进程中运行,前提是它有权这样做。这允许不同应用程序中的组件共享进程,减少资源使用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板