无法停止在不同进程中运行的服务(但在同一应用程序中)

时间:2012-03-02 06:56:50

标签: android android-intent android-service

我有一个服务('Aservice'),在清单中声明为

 <service android:name=".Aservice" android:process=":my_process"  >  </service>

我想知道如何从应用程序的另一个服务(让'Bservice')停止此服务。我试过这样,服务'Aservice'使用

找到它的进程ID
int pid =  android.os.Process.myPid();

然后它将其Id发送给另一个专门用于停止自身的服务('Bservice')(服务Aservice),'Bservice'调用此代码

android.os.Process.killProcess(pid);

其中'pid'是已发送的Aservice服务进程ID,但'Bservice'无法停止服务'Aservice',我可以看到电话设置 - >运行服务中列出的服务。还有这段代码

ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) 
    {   
        sClassName = service.service.getClassName();           
        if (sClassName.contains("com.pkg.Rand.Aservice"))
        {  return true; }          
    }       
    return false;

返回True。必须将服务作为单独的进程运行,以防止应用程序在感知位置时减慢速度。请告知如何在不同的过程中将服务作为与其他服务分开的进程停止运行。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您使用Context.startService()启动了服务,因此使用Context.stopService()停止它。它运行的过程并不重要。