首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个服务共享一个进程,有多少“主”线程?

多个服务共享一个进程,有多少“主”线程?
EN

Stack Overflow用户
提问于 2012-06-08 16:02:26
回答 1查看 2.6K关注 0票数 3

假设我有两个应用程序,它们通过在AndroidManifest.xml中声明共享相同的用户ID和相同的进程

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myapp.appname1" 
    android:sharedUserId="com.myapp.sharedUserId">

    <application android:process="com.myapp.sharedProcess">
        ...
        ...

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myapp.appname2" 
    android:sharedUserId="com.myapp.sharedUserId">

    <application android:process="com.myapp.sharedProcess">
        ...
        ...

如果每个应用程序都定义了一个服务,并且两者同时运行,那么尽管运行在相同的进程下,每个应用程序都会得到一个“主”线程吗?或者他们也共用一个“主”线程?

如有任何启发,将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2012-06-08 16:49:31

每个清单不能有多个应用程序。两个应用程序通常不能共享相同的进程,但是您可以使用android:process属性覆盖这个进程(参见下面)。

此外,Service中的代码运行在与应用程序中的活动相同的线程中,即UI线程。

如果在同一个应用程序中有多个服务,它们与应用程序处于同一个进程中,都在同一个线程上。

为了解决这个问题,您可以为应用程序指定一个进程名,也可以为一个服务指定一个进程名。请参阅android:process属性。

这将为每个服务提供一个单独的线程,因为当然每个进程都有自己的线程。

但是,根据您使用服务的目的,您可能更喜欢有多个IntentService类。它们都运行在与应用程序相同的进程中,但它们都有自己的线程,与UI线程不同。

当然,您也可以为同一服务编写多个线程,但这很难正确实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10952296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档