比如服务A和B开机都自己启动
然后服务A被系统干掉或者任务管理器干掉时,服务B能检测到A被干掉了,然后启动A
反之亦然,达到互相守护的目的
请问这种思路是可行的吗?
具体怎么实现呢?

解决方案 »

  1.   

    么必要,直接烧进rom里面做守护进程就好了,没有烧rom权限的话我也觉得没必要做出这种程序来
      

  2.   

    好吧,改rom改init当然是可以。
    我只是看到有的软件已经实现了这个功能,想学习这种方法。
      

  3.   

    没必要非要用 service 啊
    可以用receiver 启动后监听系统事件,当发生你需要的事件的时候执行相应的代码
      

  4.   

    在destory方法里面再把自己开起来如何
      

  5.   

    我觉的用这个比较可能实现你所说的要求:
    List<RunningAppProcessInfo> list = ActivityManager.getRunningAppProcesses();
    你的a,b二个service一直在查看运行的进程信息中是否有相对的,没有就启动。
    比如 a在查看时没有了b那么就启动b ...
      

  6.   

    linux下干windows的勾当。。
      

  7.   


       void getTask() {     ActivityManager activityManager;
         try 
         {
         activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
         arylistTask =new ArrayList<String>();
         List<ActivityManager.RunningTaskInfo> mRunningTasks = activityManager.getRunningTasks(30); //30表示获取的最大数     /* 以循环及baseActivity方式取得任务名称与ID */
         for (RunningTaskInfo amTask : mRunningTasks)
         {
         Log.d("TaskInfo", amTask.baseActivity.getClassName()+"("+amTask.id+")");
         }
         //获取服务
         List<RunningServiceInfo> mserviceTasks = activityManager.getRunningServices(30);
         /* 以循环方式取得任务名称与ID */
         for (RunningServiceInfo serinfo : mserviceTasks)
         {
         Log.d("TaskServerInfo", serinfo.process+"("+serinfo.pid+")");
         }
         }
         catch (Exception e)
         {     }
        }尝试获取在线进程和服务列表,来达到自己的目的,做监控
    但是在"arylistTask =new ArrayList<String>();"这一行报错:
    Description Resource Path Location Type
    arylistTask cannot be resolved
    这是哪里出了问题?
      

  8.   

    强制类型转换?  arylistTask  原来是个什么
      

  9.   

    监听器已经写好,B程序可以监测到服务A在不在线?
    但是当服务A不在线的时候,怎么启动服务A呢?
      

  10.   

    好吧,我在一个Activity中是可以直接用startService()启动目标服务
    但是在一个无界面的service中呢,貌似是行不通的吧
      

  11.   

    如果是 activity A 启动的 service 可以在service里保存下 启动时的context 比: 
    Service{
     List<Activity> list=new ArrayList<Activity>();
    }
    A{
      启动service时
      Service.list.add(this)
    }
    public static Activity getActivityByName(String name){ for(Activity ac:allActivity)
    {
    if(ac.getClass().getName().indexOf(name)>=0)
    {
    return ac;
    }
    }
    return null;
    }
    这样 来通过名字比对activity  如果不存在activity 就启动一个