当前位置: 首页 > 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.yutouwan.com/news/424627/

相关文章:

  • 河池市城乡住房建设厅网站如何投放网络广告
  • 天目西路网站建设深圳网站开发设计公司排名
  • 广州免费建站排行网站建设的业务流程图
  • 做网站龙岗有哪些做网站好的公司好
  • 企业网站建站 合肥云南网站建设效果好吗
  • 网站制作建设模板华为快速建站
  • 不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换wordpress主题加速
  • 网站创建域名html简单网页代码烟花
  • 做网站499网站源码下载插件
  • 企业网站源码生成器网站如何做搜索
  • 3营销型网站建设建设装修网站
  • 电子商务物流网站建设规划方案python做软件界面
  • 画网站 模板深圳画册设计欣赏
  • 网站分别网站模板 金融
  • 可信赖的企业网站建设电子商务网站开发公司
  • 15年做哪个网站致富网站设计标注图用什么做的
  • 泰安网站建设制作上合建设网站企业
  • 教怎么做ppt的网站asp.net 网站管理工具
  • 好用的网站系统微信转账做网站收款
  • 已经建网站做外贸怎么制作网站链接
  • 平顶山网站关键词优化Ul设计网站
  • 三只松鼠有趣的软文百度排名优化软件
  • 优秀的门户网站wordpress怎么增加按钮
  • 网站建设与维护题库及答案鞋子软文推广300字
  • 网站开发周记30篇html网站设计
  • 常州网站制作公司网站流量盈利
  • 无锡 电子商务网站建设wordpress 优酷
  • 网站开发文档模板江西核工业建设有限公司网站
  • 建立网站的流程的合理顺序优秀网站案例
  • 做网站找合作伙伴广州做网站 信科便宜