当前位置: 首页 > news >正文

企业网页与网站区别北京有几个区哪个区最好

企业网页与网站区别,北京有几个区哪个区最好,小企业网站建设平台,什么专业会做网站通过网络或直接本地获取到OTA升级包之后#xff0c;通过程序就可开始Android的升级。本文描述这一过程。在获取到OTA升级包之后#xff0c;可以直接通过android.os.RecoverySystem.installPackage()开启OTA升级。RecoverySystem.installPackage()是在API-8之后加入的#xf…通过网络或直接本地获取到OTA升级包之后通过程序就可开始Android的升级。本文描述这一过程。在获取到OTA升级包之后可以直接通过android.os.RecoverySystem.installPackage()开启OTA升级。RecoverySystem.installPackage()是在API-8之后加入的使用它需要权限android.Manifest.permission.REBOOT一、RecoverySystem#installPackage()的实现RecoverySystem.installPackage()就是把传入的文件的文件名通过arg“--update_package”【用具体文件代替】调用bootCommand()实现。bootCommand()的实现FileWriter commandnewFileWriter(COMMAND_FILE);try{command.write(arg);command.write(\n);} finally{command.close();}// Having writtenthe command file, go ahead and rebootPowerManager pm (PowerManager) context.getSystemService(Context.POWER_SERVICE);m.reboot(recovery);COMMAND_FILE 是“/cache/recovery/command”。bootCommand()也就是向/cache/recovery/command里把“--update_package”写入然后通过BinderIPC调用PowerManagerService的reboot()并把“recovery”作为参数传入。二、PowerManagerService#reboot的实现PowerManagerService.reboot(reason: String)是通过启动ShutdownThread.reboot(mContext,finalReason, false)的执行实现。执行顺序图如图所示其中的值- reason: “recovery”;- confirm: false;- rebootOrShutdown的参数分别取值reboot 最后调用的Power.reboot()通过JNI调用它的c实现。在Power.java的JNI实现在android_os_power.cpp中。三、Power.reboot的Native实现Power.reboot()是通过android_os_Power_reboot实现【frameworks/base/core/jni/android_os_power.cpp中】staticvoidandroid_os_Power_reboot(JNIEnv *env, jobject clazz,jstring reason){sync();#ifdef HAVE_ANDROID_OSif(reason  NULL) {reboot(RB_AUTOBOOT);} else{constchar*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}通过系统调用__reboot嵌入内核实现reboot。在内核态进入sys_reboot系统定义。四、sys_reboot的定义与实现sys_reboot的定义与实现要看内核中的代码// kernel/kernel/sys.cSYSCALL_DEFINE4(reboot, int, magic1,int,magic2, unsignedint, cmd,void__user *, arg)//kernel/include/linux/syscalls.h#define __SYSCALL_DEFINEx(x, name, ...)                                                                  \asmlinkagelong sys##name(__SC_DECL##x(__VA_ARGS__))#define SYSCALL_DEFINEx(x, sname, ...)                                                     \__SYSCALL_DEFINEx(x,sname, __VA_ARGS__)#define SYSCALL_DEFINE4(name, ...)SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)所以sys.c中的SYSCALL_DEFINE4(reboot, ...)就实现了sys_reboot()SYSCALL_DEFINE4(reboot,...)中对magic1和magic2进行判别只有符合的magic1及和magic2才会处理否则直接返回。对cmdLINUX_REBOOT_CMD_RESTART2把reboot的reason从用户态拷贝到内核态调用kernel_restart()执行。kernel_restart(char* cmd)先调用kernel_restart_prepare(cmd);然后调用machine_restart(cmd);// kernel/kernel/sys.cvoidkernel_restart_prepare(char*cmd){blocking_notifier_call_chain(reboot_notifier_list,SYS_RESTART, cmd);system_state SYSTEM_RESTART;device_shutdown();sysdev_shutdown();}//kernel/arch/arm/kernel/process.cvoidmachine_restart(char*cmd){arm_pm_restart(reboot_mode,cmd);}arm_pm_restart指向具体平台定义的机器重启的函数指针原型是void(*arm_pm_restart)(char str, const char *cmd)。具体实现与所采用的特定平台相关这里不再讲述。总结本文描述了Android中对OTA升级发起的过程从Framework到JNI再到Kernel层层层关系的分析看到所谓的OTA升级的发起就是通过向/cache/recovery/command里把“--update_package”写入然后通过系统调用转入内核态执行系统调用实现机器重启完成OTA升级的全过程。重启之后进入Recovery模式的过程在后面的专题中再讨论。
http://www.zqtcl.cn/news/766249/

相关文章:

  • 西安网站制作工作室网页怎么做成网站
  • 做h5网站公司百度知道网页入口
  • 网站建设 中企动力上海在线设计房屋效果图
  • 河南宝盈建设集团有限公司网站代理二级分销系统
  • 青岛高级网站建设价格对外宣传及网站建设文件稿
  • 网络营销中自建网站建设局是干嘛的单位
  • 做网站的公司 贵阳流媒体网站建设
  • 北京建网站重庆安全建设工程信息网
  • 做公司网站的尺寸一般是多大无障碍浏览网站怎么做
  • 网站登陆界面psd手机一元云购网站建设
  • 网站规范化建设wordpress iis7.5 伪静态
  • 济南网站设计建设公司深圳seo外包公司
  • 重庆信息网站推广网站做推广如何设计二维码
  • 学历低的人不适合学编程小红书seo关键词优化多少钱
  • pc网站制作公司企业邮箱格式模板
  • 河南5G网站基站建设信息wordpress自定义文章页面模板下载
  • 宁波三优互动网站建设公司怎么样手机app商城
  • 散热器 东莞网站建设php模板源码
  • 怎么申请域名建网站凡科网站建设总结
  • 温州网站设计定制外贸人才网哪家最好
  • 永康门业微网站建设做一个网站要多长时间
  • 南山网站建设哪家好四川省微信网站建设公
  • 网件路由器做网站网站建设中 提示
  • 全运网站的建设徐州网络推广公司排名
  • 成品网站源码1688体验区南宁网络推广服务商
  • 广州品牌网站开发公司网站建设价位
  • 网站首页没排名但内页有排名wordpress网站收录插件
  • 在线相册jsp网站开发与设计微信小程序app下载
  • 广元市建设局网站首页网站建设首选公司哪家好
  • 商务网站建设策划思路平台网站如何做推广方案设计