service的启动控制
来源:互联网 发布:python buffer类型 编辑:程序博客网 时间:2024/05/22 10:53
init.rc中声明某个服务:
service sample_service /system/bin/sample_service
disabled
oneshot
启动这个服务:
property_set("ctl.start","sample_service");
结束这个服务:
property_set("ctl.stop","sample_service");
看了源码,还可以重启它。
property_set("ctl.restart","sample_service");
相关源码:
property_service.c
void handle_property_set_fd(){ if(memcmp(msg.name,"ctl.",4) == 0) { // Keep the old close-socket-early behavior when handling // ctl.* properties. close(s); if (check_control_perms(msg.value, cr.uid, cr.gid, source_ctx)) { handle_control_message((char*) msg.name + 4, (char*) msg.value); } else { ERROR("sys_prop: Unable to %s service ctl [%s] uid:%d gid:%d pid:%d\n", msg.name + 4, msg.value, cr.uid, cr.gid, cr.pid); } } }
init.c
void handle_control_message(const char *msg, const char *arg){ if (!strcmp(msg,"start")) { msg_start(arg); } else if (!strcmp(msg,"stop")) { msg_stop(arg); } else if (!strcmp(msg,"restart")) { //重启 msg_stop(arg); msg_start(arg); } else { ERROR("unknown control msg '%s'\n", msg); }}
有些服务,需要参数,怎么传?找不到相关的资料,看代码:
static void msg_start(const char *name){ struct service *svc; char *tmp = NULL; char *args = NULL; if (!strchr(name, ':')) svc = service_find_by_name(name); else { tmp = strdup(name); args = strchr(tmp, ':'); *args = '\0'; args++; svc = service_find_by_name(tmp); } if (svc) { service_start(svc, args); } else { ERROR("no such service '%s'\n", name); } if (tmp) free(tmp);}
看来在“:”后面加参数就可以了。例如:
property_set("ctl.start","sample_service:arg0");
如果要加入多个参数,不知道是否和命令行中一样,用空格分隔即可。实测:
//sample_service.cint main(int argc,char *argv[]){char *arg0, *arg1;if(argc < 3){printf("param num: %d\n", argc);return 1;}arg0 = *++argv;arg1= *++argv;printf("arg0=%s, arg1=%s\n", arg0, arg1);}
调用:
property_set("ctl.start","sample_service:hello world");
输出结果:
hello, world
测试成功
0 0
- service的启动控制
- adb shell 控制启动Activity、Service等
- 关于Service的启动。。
- Service的启动
- 启动service的问题
- service启动的变化
- Service的启动
- service的启动方法
- Service的启动过程
- schedule service的启动
- Service的启动--startService
- 【Android】Activity切换效果——当通过Service启动自己Activity的时候怎么控制
- Web Service 的状态控制
- Web Service 的状态控制
- 二次启动的控制
- daemon 的启动方式: service
- service 启动activity的问题解决
- Android 开机启动的service
- java线程学习笔记
- 陌上花开,聆听那一曲旧时光的伤
- 学习JQuery - 2
- session持久化设置
- QT程序打包发布 - 免安装(MolePro Box)
- service的启动控制
- android关闭应用
- JUnit简单使用教程
- 文本分类资源和程序开源共享
- Checkstyle 系列之认识 Checkstyle
- android常用库
- 从SQL语言的分类谈COMMIT和ROLLBACK的用法
- 一篇关于学C++的感想(拿来与大家分享)
- 黑马程序员 07 IO_Stream_File