请教,我试想2个service,开机自启动,然后互相守护,该如何实现? 比如服务A和B开机都自己启动然后服务A被系统干掉或者任务管理器干掉时,服务B能检测到A被干掉了,然后启动A反之亦然,达到互相守护的目的请问这种思路是可行的吗?具体怎么实现呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 么必要,直接烧进rom里面做守护进程就好了,没有烧rom权限的话我也觉得没必要做出这种程序来 好吧,改rom改init当然是可以。我只是看到有的软件已经实现了这个功能,想学习这种方法。 没必要非要用 service 啊可以用receiver 启动后监听系统事件,当发生你需要的事件的时候执行相应的代码 在destory方法里面再把自己开起来如何 我觉的用这个比较可能实现你所说的要求:List<RunningAppProcessInfo> list = ActivityManager.getRunningAppProcesses();你的a,b二个service一直在查看运行的进程信息中是否有相对的,没有就启动。比如 a在查看时没有了b那么就启动b ... linux下干windows的勾当。。 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 TypearylistTask cannot be resolved 这是哪里出了问题? 强制类型转换? arylistTask 原来是个什么 监听器已经写好,B程序可以监测到服务A在不在线?但是当服务A不在线的时候,怎么启动服务A呢? 好吧,我在一个Activity中是可以直接用startService()启动目标服务但是在一个无界面的service中呢,貌似是行不通的吧 如果是 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 就启动一个 请有过android平板开发的进来谈一下经验吧 如何编译生成Fast boot,请教 Android 画图板实现 联想a68e手机如何获取root权限 如何刷机啊? Spinner控件中的数据很长显示不开怎么办? SimpleExpandableListAdapter 问题 模拟器无法启动 如何使用自己新建的布局文件,替代系统生成的布局文件? getAssets() 返回null 是啥回事 Error: Program type already present 出现如下信息:./grxmlcompile: 1: Syntax error: "&" unexpected 绘制 移动 图形,,
我只是看到有的软件已经实现了这个功能,想学习这种方法。
可以用receiver 启动后监听系统事件,当发生你需要的事件的时候执行相应的代码
List<RunningAppProcessInfo> list = ActivityManager.getRunningAppProcesses();
你的a,b二个service一直在查看运行的进程信息中是否有相对的,没有就启动。
比如 a在查看时没有了b那么就启动b ...
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
这是哪里出了问题?
但是当服务A不在线的时候,怎么启动服务A呢?
但是在一个无界面的service中呢,貌似是行不通的吧
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 就启动一个