Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在单独的全局或私有进程中提供服务。有什么区别?_Android_Process_Android Service - Fatal编程技术网

Android 在单独的全局或私有进程中提供服务。有什么区别?

Android 在单独的全局或私有进程中提供服务。有什么区别?,android,process,android-service,Android,Process,Android Service,有什么区别 如果分配给此属性的名称以冒号(“:”)开头,则会在需要时创建应用程序专用的新进程,并在该进程中运行服务。如果进程名称以小写字符开头,则服务将在该名称的全局进程中运行,前提是它具有这样做的权限。这允许不同应用程序中的组件共享一个进程,从而减少资源使用 我已经检查过了,我可以绑定到服务,无论它是私有的还是全局的,无论我是在同一个应用程序中还是在第二个应用程序中。(不同的UID)我不确定您所说的私有进程是什么意思,但通常服务在应用程序的默认进程或专用进程中运行(由android设置:清单中

有什么区别

如果分配给此属性的名称以冒号(“:”)开头,则会在需要时创建应用程序专用的新进程,并在该进程中运行服务。如果进程名称以小写字符开头,则服务将在该名称的全局进程中运行,前提是它具有这样做的权限。这允许不同应用程序中的组件共享一个进程,从而减少资源使用


我已经检查过了,我可以绑定到服务,无论它是私有的还是全局的,无论我是在同一个应用程序中还是在第二个应用程序中。(不同的UID)

我不确定您所说的私有进程是什么意思,但通常服务在应用程序的默认进程或专用进程中运行(由android设置:清单中服务组件的进程)。如果服务已显式地将android:exported=true设置为true,或者如果服务组件具有意图过滤器且未将exported设置为false,则具有不同用户Id的客户端可以绑定或启动您的服务


在服务标签上设置的权限可以进一步限制谁可以启动和绑定到您的服务。

您可以通过在进程名称前加冒号“:”将服务设置为私有。在这种情况下,流程是私有的,而不一定是服务。全局进程允许来自不同应用程序的组件共享一个进程。是否允许绑定到服务的限制并不取决于服务的部署方式。好的,我想我明白了。这是否意味着使流程全球化可以与其他应用程序共享?(我想他们可以在这个过程中运行线程)是的。默认情况下,共享同一进程的所有组件共享一个VM和一个主线程。组件(即使它们来自不同的应用程序)可以在此共享进程中生成线程。通常共享一个进程以限制系统影响。这不是典型的部署策略,但如果两个应用程序共享相同的用户ID并使用相同的证书签名,将第二个应用程序上的Application标记中的android:process设置为全局进程名称应该足以在服务进程中运行第二个应用程序,但我不知道您为什么要这样做。