Java 为什么stopService(Intent)和stopSelf()方法不停止我的唯一服务?

Java 为什么stopService(Intent)和stopSelf()方法不停止我的唯一服务?,java,android,android-studio,Java,Android,Android Studio,嗨,朋友们,我有一个IntentService,我想用stopSelf()从IntentService停止它,但我不工作,我尝试用stopService(Intent)从主活动停止它,但我也不工作。 谢谢朋友们,顺便说一下,我在清单中添加了这一行: <service android:name=".MiIntentService"></service> 您可以使用一个简单的服务来代替意图服务,意图服务在需要时更容易立即停止。 另一方面,你可以使用这种方法。 首先在Mani

嗨,朋友们,我有一个IntentService,我想用stopSelf()从IntentService停止它,但我不工作,我尝试用stopService(Intent)从主活动停止它,但我也不工作。 谢谢朋友们,顺便说一下,我在清单中添加了这一行:

<service android:name=".MiIntentService"></service>

您可以使用一个简单的服务来代替意图服务,意图服务在需要时更容易立即停止。 另一方面,你可以使用这种方法。 首先在Manifest.xml中声明服务的流程,如下所示。这将使您的服务在单独的线程上运行

<service 
android:name=".MiIntentService"
android:exported="false"
android:process=":myservice">
</service>

然后,如果要终止服务,请调用此方法:

 public void killService(){


       ActivityManager am = (ActivityManager) getLMvdActivity().getSystemService(ACTIVITY_SERVICE);
       List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

       Iterator<ActivityManager.RunningAppProcessInfo> iter = runningAppProcesses.iterator();

       while(iter.hasNext()){
           ActivityManager.RunningAppProcessInfo next = iter.next();

           String pricessName = getLMvdActivity().getPackageName() + ":myservice"; //i.e the process you named for your service

           if(next.processName.equals(pricessName)){
               Process.killProcess(next.pid);
               break;
           }
       }

   }
公共服务(){
ActivityManager am=(ActivityManager)getLMvdActivity().getSystemService(ACTIVITY_服务);

列表

请详细解释“不工作”的含义。您的具体症状是什么?hi@Commonware感谢您回答我的问题,我想要的是停止INTENTSERVICE,我尝试了stopService(Intent)和stopSelf(),但服务没有使用任何方法stopSelf()停止和停止服务。看我写的代码,我想在10秒后停止。谢谢。我不知道你是如何确定“服务没有停止”。“我想在10秒后停止”--您的代码将在100秒后停止。您正在循环10次,每次睡眠10秒。@commonware ahmm所以这就是我想要停止服务或杀死它的原因,例如,在50秒后。我可以这样做吗?
<service 
android:name=".MiIntentService"
android:exported="false"
android:process=":myservice">
</service>
 public void killService(){


       ActivityManager am = (ActivityManager) getLMvdActivity().getSystemService(ACTIVITY_SERVICE);
       List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

       Iterator<ActivityManager.RunningAppProcessInfo> iter = runningAppProcesses.iterator();

       while(iter.hasNext()){
           ActivityManager.RunningAppProcessInfo next = iter.next();

           String pricessName = getLMvdActivity().getPackageName() + ":myservice"; //i.e the process you named for your service

           if(next.processName.equals(pricessName)){
               Process.killProcess(next.pid);
               break;
           }
       }

   }