一般来说是这样的,两个service相互监听,一个停止了,另一个就把停止的那个service重启

解决方案 »

  1.   

    请问两个service怎么相互监听,一个service停止了,另一个service是怎么知道的,靠广播吗?
      

  2.   

    这个怎么实现,在ondestory的时候发送广播么,但是系统好像是直接progress.kill()
      

  3.   


    /** 
            * 用来判断服务是否运行. 
            * @param context 
            * @param className 判断的服务名字 
            * @return true 在运行 false 不在运行 
            */
           public static boolean isServiceRunning(Context mContext,String className) { 
               boolean isRunning = false; 
    ActivityManager activityManager = (ActivityManager) 
    mContext.getSystemService(Context.ACTIVITY_SERVICE);  
               List<ActivityManager.RunningServiceInfo> serviceList  
               = activityManager.getRunningServices(30); 
              if (!(serviceList.size()>0)) { 
                   return false; 
               } 
               for (int i=0; i<serviceList.size(); i++) { 
                   if (serviceList.get(i).service.getClassName().equals(className) == true) { 
                       isRunning = true; 
                       break; 
                   } 
               } 
               return isRunning; 
           } 如果两个服务在不停遍历,这样也不合适,会有性能的问题
      

  4.   


    /** 
            * 用来判断服务是否运行. 
            * @param context 
            * @param className 判断的服务名字 
            * @return true 在运行 false 不在运行 
            */
           public static boolean isServiceRunning(Context mContext,String className) { 
               boolean isRunning = false; 
    ActivityManager activityManager = (ActivityManager) 
    mContext.getSystemService(Context.ACTIVITY_SERVICE);  
               List<ActivityManager.RunningServiceInfo> serviceList  
               = activityManager.getRunningServices(30); 
              if (!(serviceList.size()>0)) { 
                   return false; 
               } 
               for (int i=0; i<serviceList.size(); i++) { 
                   if (serviceList.get(i).service.getClassName().equals(className) == true) { 
                       isRunning = true; 
                       break; 
                   } 
               } 
               return isRunning; 
           } 如果两个服务在不停遍历,这样也不合适,会有性能的问题应该不是这样的,,,
      

  5.   


    看看利用系统时钟来实现的守护进程alarm那个我倒是知道,但是你说的另外一个servic不能是系统service吧,,,
      

  6.   


    看看利用系统时钟来实现的守护进程alarm那个我倒是知道,但是你说的另外一个servic不能是系统service吧,,,alarm定时去检测服务是否运行,如果没运行就启动,定时也会被系统休眠给干掉的吧
      

  7.   


    看看利用系统时钟来实现的守护进程alarm那个我倒是知道,但是你说的另外一个servic不能是系统service吧,,,alarm定时去检测服务是否运行,如果没运行就启动,定时也会被系统休眠给干掉的吧不会,因为是系统service
      

  8.   


    看看利用系统时钟来实现的守护进程alarm那个我倒是知道,但是你说的另外一个servic不能是系统service吧,,,alarm定时去检测服务是否运行,如果没运行就启动,定时也会被系统休眠给干掉的吧不会,因为是系统service对,系统service是不会被杀掉的,要不然系统就挂了。。
      

  9.   

    楼主找到办法了吗 ,我用小米手机测试,service是直接被杀死的.但是QQ/微信不会
      

  10.   

    1.要想避免这种情况可以通过startForeground让服务前台运行,当stopservice的时候通过stopForeground去掉。
    要想实现需求,我们只需要在onStartCommand里面调用 startForeground,然后再onDestroy里面调用stopForeground即可! 
    实际情况就譬如手机里面的音乐播放器一样,不管手机如何休眠,只要开始播放音乐了,就不会kill掉这个服务,一旦停止播放音乐,服务就可能被清掉。
    2.参考下这篇文章:http://thelostriver.blog.163.com/blog/static/130364744201231385646838/
      

  11.   

    这样你看行不行啊,在启动应用的时候启动两个服务,分别在这两个服务的onDestroy中分别先去启动另外的服务,在另外的服务的onStartCommand中去启动自己,两个服务都这么干