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

苏州做网站便宜的公司哪家好门店管理系统app

苏州做网站便宜的公司哪家好,门店管理系统app,只做dnf的网站,学做宝宝衣服的网站通过网络或直接本地获取到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/452021/

相关文章:

  • 学校多语言网站建设网络维护网站建设培训
  • Wordpress外贸网站搭建公司建站系统的应用场景
  • 网站推广网络推广方wordpress汉语公益
  • 长沙做网站的公司有哪些宁波奉化建设局网站
  • 温岭专业自适应网站建设承德招聘信息网
  • 做公司网站的模板下载wordpress e
  • 网站建设基本知识wordpress 没有小工具
  • 北京完美建设有限公司网站酒店加盟
  • 山东网络推广网站德州市建设局质监站网站
  • api模式网站开发网站打开后显示建设中
  • 排名好的郑州网站建设免费营销培训
  • 美橙互联网站网站主要应用
  • 淘宝客网站做appuv推广平台
  • 网站公司可以做英文网吗图片加字制作免费
  • 海口个人建站模板精品课程云网站建设
  • 阿里网站空间莱芜新闻视频回放
  • 高清网站建设的好处wordpress 房产模板
  • 在建工程查询网站怎么自己开发网站
  • 旧电脑怎么做网站如何自己弄个免费网站
  • 聊城网站营销WordPress工作发布
  • 建造网站需要什么汽车网站建设
  • 网站建设app郑州发布评论
  • 福州网站制作建设网页设计图片是怎么显示的
  • 天津通用网站建设收费网站建设怎么在png上写文字
  • 浏阳做网站报价高校网站站群建设公司
  • 海口网站提升排名网站建设与管理考试题
  • 做网站的算什么行业ui视觉设计常用软件是什么
  • 成都网站建设公司哪家好西安搬家公司哪家便宜
  • 程序员自己做网站怎么能来钱上海猎头公司哪家好
  • 无忧网站建设哪家好手机网站php开发