假设我有两个应用程序,它们通过在AndroidManifest.xml中声明共享相同的用户ID和相同的进程
<?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">
...
...和
<?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">
...
...如果每个应用程序都定义了一个服务,并且两者同时运行,那么尽管运行在相同的进程下,每个应用程序都会得到一个“主”线程吗?或者他们也共用一个“主”线程?
如有任何启发,将不胜感激。谢谢!
发布于 2012-06-08 16:49:31
每个清单不能有多个应用程序。两个应用程序通常不能共享相同的进程,但是您可以使用android:process属性覆盖这个进程(参见下面)。
此外,Service中的代码运行在与应用程序中的活动相同的线程中,即UI线程。
如果在同一个应用程序中有多个服务,它们与应用程序处于同一个进程中,都在同一个线程上。
为了解决这个问题,您可以为应用程序指定一个进程名,也可以为一个服务指定一个进程名。请参阅android:process属性。
这将为每个服务提供一个单独的线程,因为当然每个进程都有自己的线程。
但是,根据您使用服务的目的,您可能更喜欢有多个IntentService类。它们都运行在与应用程序相同的进程中,但它们都有自己的线程,与UI线程不同。
当然,您也可以为同一服务编写多个线程,但这很难正确实现。
https://stackoverflow.com/questions/10952296
复制相似问题