android系统关机流程
android系统都有一个关机按键,长按这个按键系统会进行关机操作。具体实现流程如下:
在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下:
reboot——>sys_reboot()——>kernel_power_off()——>machine_power_off()——>pm_power_off();
pm_power_off 是一个函数指针,他指向和具体硬件平台相关的关机操作函数。
和sys_reboot相关的系统调用在source/kernel/sys.c中实现,然后在
source/asm-arm/unistd.h中添加系统调用号。
然后在source/arch/arm/kernel/entry-common.S中对sys_call_table(系统调用表)
进行定义,具体的表在source/arch/arm/kernel/call.S中实现。
android 系统关机,重启
1.android系统的关机,重启代码位于frameworks/base/core/jni/android_os_Power.cpp,里面有
static void android_os_Power_shutdown(JNIEnv *env, jobject clazz)
{/*关机*/
sync();
#ifdef HAVE_ANDROID_OS
reboot(RB_POWER_OFF);
#endif
}
static void android_os_Power_reboot(JNIEnv *env, jobject clazz, jstring reason)
{/*重启*/
sync();
#ifdef HAVE_ANDROID_OS
if (reason == NULL) {
reboot(RB_AUTOBOOT);
} else {
const char *chars = env->GetStringUTFChars(reason, NULL);
__reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
LINUX_REBOOT_CMD_RESTART2, (char*) chars);
env->ReleaseStringUTFChars(reason, chars); // In case it fails.
}
jniThrowIOException(env, errno);
#endif
}
2.最终会调用到linux中的sys_reboot,所以我们还是可以做到在android中加入重启功能的;
关机和重启在Linux Kernel中的哪些函数里实现。
reboot的最终实现在arch_reset()函数,它通常定义在arch/arm/mach-xxx/include/mach/system.h里。system.h被ARM kernel的public code应用,因此你需要定义这个头文件,并实现它。
arch_reset的函数原型为
void arch_reset(char mode)
void arch_reset(char mode)
关机需要将pm_power_off这个函数指针指向你自己的实现函数。函数指针是这样定义的
void (*pm_power_off)(void); ......
转自: http://blog.csdn.net/yanzheng1113/article/details/7178067
转载于:https://my.oschina.net/abcijkxyz/blog/788690
android系统关机流程相关推荐
- android 关机功能,Android系统关机或重启的几种实现方式
前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要. 默认的SDK并没有提供应用开发者直接的An ...
- Android 4.4KK系统关机流程分析
在PowerManager的API文档中,给出了一个关机/重启接口 public void reboot (String reason) 对于这个接口的描述很简单,就是几句话. 接口的作用就是重启设备 ...
- android 关机 流程_android系统关机流程分析
关机动作从按键触发中断,linux kernel层给android framework层返回按键事件进入 framework层,再从 framework层到kernel层执行kernel层关机任务. ...
- android系统关机广播,android关机方法汇总
有段时间做系统hook时需要用到系统重启,找了几种重启的方法,还有几种关机的方法,总结一下. 一,发送广播 Broadcast, Intent.ACTION_REQUEST_SHUTDOWN关机广播 ...
- android系统关机广播,Android开机广播和关机广播
android开机广播:代码如下: import android.content.BroadcastReceiver; import android.content.Context; import a ...
- Android 手机关机流程及异常分析
极力推荐Android 开发大总结文章:欢迎收藏 程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中的 关机 部分知识点,通过阅读本篇文章,您 ...
- Android系统关机和重启
一. 发送系统广播方式 Broadcast是Android的四大基本组件之中的一个.也就是我们常说的广播.Android系统本身就包括了很多广播,时时刻刻在监听着系统中注冊的每个广播并随时准备响应操 ...
- 高通平台开发系列讲解(系统篇)系统关机流程
文章目录 一.关机流程图 二.执行关机流程 2.1.kernel_shutdown_prepare流程 2.2.migrate_to_reboot_cpu流程 2.3.syscore_shutdown ...
- 获取Android系统关机时间
在写Android测试代码的时候需要获取系统的关机时间,可以通过监听关机广播实现. 广播监听类不能写在androidTest目录下,需要在辅助apk中实现,这样在运行测试类时就可以获取关机时间 添加步 ...
最新文章
- 管理中应避免“妇人之仁”
- Qt QProces的使用
- excel实战应用案例100讲(十四)-Excel可直接分析的大数据语义层
- Grace Ex助力区块链数字资产迈向全新未来
- 5G 时代,优酷推出的帧享究竟是什么?
- 使用Android OpenGL ES 2.0绘图之四:应用投影和相机视图
- 阅读VDN:Value-Decomposition Networks For Cooperative Multi-Agent Learning Based On Team Reward
- BaseHTTPRequestHandler,HTTPServer
- novoton-msys_init函数
- 矩形类的定义(java)
- 道德经和译文_道德经全文和译文
- 基于Elasticsearch 实现站内全文搜索
- 【华人学者风采】黄维 西北工业大学
- 32 | KafkaAdminClient:Kafka的运维利器
- QT QDateTime获取当前时间且分出年月日时分秒
- perl中bless的理解(zz) z
- 小程序集成网易云通信群聊功能Demo发布
- CodeForces103B - Cthulhu 解题报告
- 快速扩展在线文档产品特性的9个开源项目
- bak文件转换成sql文件_将BAK文件还原到SQL数据库!