本申请实施例涉及智能设备技术,尤其涉及一种检测终端开机异常问题的方法、装置、存储介质及终端。
背景技术:
随着终端的智能化程度增加,其在人们的日常生活中的应用越来越普及。然而,由于终端的高度智能化,通常会因为各种各样的原因导致终端开机失败。
目前,安卓系统(以下简称android)本身可以通过看门狗(或者称为watchdog)机制,监控开机流程中因服务卡死导致开机失败的情况。例如,在某一关键的服务启动的时候,启动watchdog监测该服务是否卡死。然而,上述watchdog机制不能检测zygote进程启动前的服务或分区挂载情况,存在漏检测的问题。
技术实现要素:
本申请实施例提供一种检测终端开机异常问题的方法、装置、存储介质及终端,可以有效地优化相关技术中的检测终端不开机问题的方案。
第一方面,本申请实施例提供了一种检测终端开机异常问题的方法,包括:
检测到init进程启动;
通过预设检测服务获取开机动画进程的状态信息,其中,预设检测服务对应的程序代码在init进程解析init.rc文件时执行;
根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
第二方面,本申请实施例还提供了一种检测终端开机异常问题的装置,该装置包括:
启动检测模块,用于检测到init进程启动;
信息获取模块,用于通过预设检测服务获取开机动画进程的状态信息,其中,预设检测服务对应的程序代码在init进程解析init.rc文件时执行;
信息存储模块,用于根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
第三方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的检测终端开机异常问题的方法。
第四方面,本申请实施例提供了一种终端,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的检测终端开机异常问题的方法。
本申请实施例提供一种检测终端开机异常问题的方案,在检测到init进程启动时,通过预设检测服务获取开机动画进程的状态信息,其中,该预设检测服务对应的程序代码在init进程解析init.rc文件时执行;根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。通过上述技术方案,可以在开机流程进入安卓层面后即启动预设检测服务以检测开机状态,并在开机失败时获取整个流程中的导致不开机问题的日志进行存储;可以覆盖开机流程的完整阶段,避免出现漏检测的问题,此外,保存导致开机失败的目标信息,还可以便于终端开发人员分析导致不开机问题的原因,进而优化终端的开机流程。
附图说明
图1为本申请实施例提供的一种检测终端开机异常问题的方法的流程图;
图2为一种基于android系统的终端的开机启动流程的框架图;
图3为本申请实施例提供的另一种检测终端开机异常问题的方法的流程图;
图4为本申请实施例提供的又一种检测终端开机异常问题的方法的流程图;
图5为本申请实施例提供的一种检测终端开机异常问题的装置的结构框图;
图6为本申请实施例提供的一种终端的结构示意图;
图7是本申请实施例提供的一种智能手机的结构框图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1为本申请实施例提供的一种检测终端开机异常问题的方法的流程图,本实施例可适用于监控终端开机失败情况的场景,该方法可以由软件和/或硬件实现,一般可集成在终端中。如图1所示,该方法包括:
步骤110、检测到init进程启动。
需要说明的是,本申请实施例中的终端可包括手机、平板电脑、笔记本电脑、计算机、掌上游戏机以及智能家电等设置安装有操作系统的设备。本申请实施例中对操作系统的类型不做限定,例如可包括安卓(android)操作系统、窗口(windows)操作系统以及苹果(ios)操作系统等等。
以android为例简述终端的开机流程。android的启动过程可以分为两个阶段,第一阶段是linux的启动,第二阶段是android的启动(可以称为上层开机流程)。图2为一种基于android系统的终端的开机启动流程的框架图。如图2所示,开机启动流程包括:201、bootrom——当按开机按键的时候,引导芯片开始从固化在rom的预设代码开始执行,然后加载引导程序到ram。202、bootloader,又称为引导程序,是在操作系统运行之前运行的一段程序,是运行的第一个程序,用于把操作系统映像文件拷贝到ram中去,然后跳到映像文件的入口去执行该文件,也可以称之为进入启动加载模式。203、kernel——将内核加载进内存后,首先进入内核引导阶段,在内核引导阶段的最后,调用start_kernel进入内核启动阶段,主要是完成内核的大部分初始化工作。start_kernel会最终启动用户空间的init进程。204、init进程——当初始化内核之后,就会启动init进程,在linux中所有的进程都是由init进程直接或间接fork出来的。init进程负责创建系统中最关键的几个核心daemon(守护)进程,包括但不限于zygote和servicemanager。其中,zygote是android启动的第一个dalvik虚拟机,它负责启动java进程。servicemanager是binder通信的基础。205、zygote进程——该进程是所有java进程的父进程。例如,zygote虚拟机启动子进程system_server,同时定义了一个socket,用于接收activitymanagerservice启动应用程序的请求。206、systemserver进程——在systemserver进程开启的时候,会初始化activitymanagerservice。同时,会加载本地系统的服务库,调用createsystemcontext()创建系统上下文,创建activitythread及开启各种服务等等。207、homeactivity——在activitymanagerservice开启之后,会调用finishbooting()完成引导过程,同时发送开机广播,进入home界面,显示桌面。
本申请实施例中,终端监控开机流程的执行,在检测到创建并启动内核线程init的指令时,确定检测到init进程启动。例如,内核初始化函数start_kernel执行到最后调用rest_init函数,而rest_init函数主要用于创建并启动内核线程init。
步骤120、通过预设检测服务获取开机动画进程的状态信息。
需要说明的是,预设检测服务用于对开机流程进行循环检测,获取开机动画服务(承载于开机动画进程上的服务)的属性值,并将该属性值与代表开机动画结束的属性值进行比对。若两者的属性值相同,则确定开机动画结束;否则,确定开机动画处于播放状态。
另外,该预设检测服务对应的程序代码在init进程解析init.rc文件时执行,可以理解为,init进程在执行时会加载一些基础服务以及各种定义于init.rc文件中的服务,该预设检测服务对应的程序代码在init进程解析init.rc文件时执行。例如,该预设检测服务对应的程序代码在执行init.rc文件的解析操作时被加载,并且可以在执行解析init.rc文件的首行函数之前执行。其中,init.rc文件可以包含系统核心服务的定义,如surfaceflinger、mediaserver、logcatd等;还可以包括soc厂商针对soc核心功能定义的一些服务,如高通或mtk某一款soc的相关的服务。还可以包括与em/odm厂商的产品所使用的外设以及差异化功能相关的服务等。单一的init*.rc被拆分,其对应的服务可以基于其二进制文件的位置(如/system,/vendor或者/odm)被定义到对应分区的etc/init目录中,需要说明的是,每个服务对应一个rc文件。
需要说明的是,开机动画进程,又可以称为bootanimation进程,是用于在触摸屏上显示开机动画的进程。该开机动画进程通过执行surfaceflinger::startbootanim()函数启动,其中,bootanimation的中的配置为disabled,表明该进程依赖于系统的显示服务,只有当显示相关的服务启动后bootanimation进程才能启动,也就是surfaceflinger服务起来后会拉起bootanimation服务显示开机动画。由于bootanimation继承了thread类,当调用父类的run()时,会在该线程运行前,调用readytorun(),执行设定的初始化工作。例如,通过执行readytorun()调用surfacecomposerclient对象msession的成员函数createsurface,获得一个surfacecontrol对象control,然后调用control的成员函数getsurface,获得一个surface对象s。control和s都可以与surgaceflinger通过binder进行通信。此外,还初始化openegl和egl,以定义一个egl显示屏以及描述一个egl帧缓冲区配置参数,并描述一个egl绘图表面和一个egl绘图上下文。另外,按照顺序读取动画文件用于显示在触摸屏上。
需要说明的是,状态信息用于表征开机动画进程是否执行完,即开机动画是否播放完,包括代表开机动画结束的第一属性值和代表开机动画播放的第二属性值。
示例性的,在检测到init进程启动后,判断init进程是否执行解析init.rc文件,若是,则加载并执行预设检测服务对应的程序代码,基于该程序代码执行循环检测,以周期性的检测开机动画进程的状态信息。
步骤130、根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
需要说明的是,基于终端的开机流程中开机动画的显示时间可以确定开机动画进程在执行时的阈值时间,记为预设时间阈值。例如,将预设时间阈值设置的略大于正常情况下开机动画的显示时间。若开机动画进程的执行时间超过预设时间阈值,则说明开机流程卡在了开机动画显示阶段,开机动画进程始终处于执行开机动画服务状态,确定开机失败。假设在开机动画进程的执行时间超过预设时间阈值之前,检测开机动画服务的属性值变为代表开机动画结束的属性值,则确定开机动画进程结束,可以得出开机成功的结论。在开机成功后,可以执行该预设检测服务对应的程序代码的退出语句,以退出程序。
示例性的,在基于该状态信息确定开机失败时,打印整个开机流程中的记录开机异常信息的日志文件,记为开机异常日志,也就是说,开机异常日志包含了整个开机流程中导致终端开机失败的目标信息。将该开机异常日志存储于终端的设定存储空间内,以便于将该开机异常日志回传至终端厂商的服务器。可选的,将该开机异常日志存储于终端的预留分区中,其中,预留分区是终端厂家为了存储一些关键日志或者其它不希望被清除的信息的定制分区。预留分区具有读写频率低于设定阈值的特点,该设定阈值可以是系统默认的较低的读写频率,可以避免因频繁读写导致分区损坏的情况发生。该预留分区还具有在刷机时不会被擦除的特点,可以稳妥的保存记录开机异常信息的日志文件。
本申请实施例的技术方案,在检测到init进程启动时,通过预设检测服务获取开机动画进程的状态信息,其中,该预设检测服务对应的程序代码在init进程解析init.rc文件时执行;根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。通过上述技术方案,可以在开机流程进入安卓层面后即启动预设检测服务以检测开机状态,并在开机失败时获取整个流程中的导致不开机问题的日志进行存储,可以将日志回传至终端厂商;可以覆盖开机流程的完整阶段,避免出现漏检测的问题,此外,保存导致开机失败的目标信息,还可以便于终端开发人员分析导致不开机问题的原因,进而优化终端的开机流程。
图3为本申请实施例提供的另一种检测终端开机异常问题的方法的流程图,如图3所示,该方法包括:
步骤301、检测到init进程启动。
步骤302、通过预设检测服务周期性地获取开机动画服务的属性信息。
需要说明的是,属性信息是代表开机动画播放结束与否的字符。终端可以通过检测开机动画服务的属性信息判定开机动画是否播放结束。
示例性的,预设检测服务按照设定的周期获取开机动画服务的属性信息。其中,周期值可以是系统默认值,在设置该周期值时需要综合考虑终端的计算量以及检测的时效性。假设该周期值设置的过小,则会导致终端的计算量较大,而占用终端过多的计算资源。假设该周期值设置的过大,则不能及时的检测到开机动画结束。
步骤303、获取开机动画进程的执行时间。
示例性的,记录开机动画进程的执行时间,可以采用的方式是,在开机动画进程开始执行时,触发时间记录模块工作,以进行时间记录。需要说明的是,时间记录模块可以是计时器或晶振等硬件部件,还可以通过软件实现。
终端通过预设检测服务周期性的获取开机动画进程的执行时间,其中,上述检测周期的周期值可以是系统默认值。
步骤304、判断所述执行时间是否小于预设时间阈值,若是,则执行步骤305,否则执行步骤308。
示例性的,终端由时间记录模块获取开机动画进程的执行时间,并将该执行时间与预设时间阈值进行比较。
步骤305、判断所述属性信息是否为代表开机动画结束的属性值,若是,则执行步骤306,否则执行步骤307。
步骤306、确定开机动画进程处于结束状态,确定开机成功。
示例性的,在开机动画进程的执行时间小于预设时间阈值时,若检测到开机动画服务的属性信息变为代表开机动画结束的值,则确定开机动画进程处于结束状态。进而,若检测到开机动画进程处于结束状态,则可以确定开始成功。
步骤307、确定开机动画进程处于执行开机动画服务状态。
示例性的,若开机动画服务的属性信息为代表开机动画正在播放的值,则可以确定开机动画进程处于执行开机动画服务状态。
在当前周期内,确定开机动画进程处于执行开机动画服务状态,预设检测服务等待设定时间以在下一个周期来临时,返回步骤303获取开机动画进程的执行时间,再依次执行步骤304和步骤305,循环执行上述步骤直至该执行时间超过预设时间阈值,或者直至在执行时间超过预设时间阈值之前检测到开机动画进程处于结束状态。
步骤308、若开机动画进程始终处于执行开机动画服务状态,则确定开机失败。
示例性的,若在该执行时间超过预设时间阈值之前,开机动画进程始终处于执行开机动画服务状态,且在该执行时间超过预设时间阈值时,仍然未检测到开机动画的结束事件,则确定开机失败。
步骤309、在基于所述状态信息确定开机失败时,获取开机流程对应的开机异常日志。
其中,开机异常日志包含整个开机流程中引发终端开机失败故障的目标信息。该目标信息包含整个开机流程中所有服务卡死,或者服务不结束或者分区挂载不成功等故障的关键信息。
示例性的,在开机失败时,获取开机流程中各个发生故障的阶段的开机异常日志。
步骤310、将所述开机异常日志存储于预留分区。
将开机异常日志存储于预留分区,以待合适的时机将该开机异常日志上报给终端的研发人员,可以避免因刷机或终端重启导致的记录开机异常的关键信息的日志文件丢失的情况发生,为研发人员分析开机异常的原因提供依据,进而,还为优化开机流程提供依据。
本申请实施例的技术方案,在预设检测服务的执行时间超过预设时间阈值之前,检测开机动画进程的执行状态,并根据该开机动画进程的执行状态确定开机是否成功;若开机失败,则打印整个开机流程各个出错的阶段对应的关键信息,作为开机异常日志,并将开机异常日志稳妥的存储于预留分区,从而,可以覆盖上层开机流程的完整阶段,并不局限于单个模块或服务,避免出现漏检测的情况;此外,还可以避免因刷机或终端重启导致的记录开机异常的关键信息的日志文件丢失的情况发生。
图4为本申请实施例提供的又一种检测终端开机异常问题的方法的流程图,如图4所示,该方法包括:
步骤401、检测到init进程启动。
步骤402、通过预设检测服务周期性地获取开机动画服务的属性信息。
步骤403、获取开机动画进程的执行时间。
步骤404、判断所述执行时间是否小于预设时间阈值,若是,则执行步骤405,否则执行步骤408。
步骤405、判断所述属性信息是否为代表开机动画结束的属性值,若是,则执行步骤406,否则执行步骤407。
步骤406、确定开机动画进程处于结束状态,确定开机成功。
步骤407、确定开机动画进程处于执行开机动画服务状态。
需要说明的是,在当前周期内,确定开机动画进程处于执行开机动画服务状态,预设检测服务等待设定时间以在下一个周期来临时,返回步骤403获取开机动画进程的执行时间,再依次执行步骤404和步骤405,循环执行上述步骤直至该执行时间超过预设时间阈值,或者直至在执行时间超过预设时间阈值之前检测到开机动画进程处于结束状态。
步骤408、若开机动画进程始终处于执行开机动画服务状态,则确定开机失败。
步骤409、在基于所述状态信息确定开机失败时,获取开机流程对应的开机异常日志。
步骤410、将所述开机异常日志存储于预留分区。
步骤411、在检测到满足预设条件时,获取所述目标信息并以日志文件的形式输出。
需要说明的是,预设条件包括但不限于检测到预设诊断工具的信息获取请求,以及检测到开机异常后的正常开机。其中,正常开机包括在开机异常后系统自动重启后的正常开机;另外,正常开机还包括刷机后的正常开机等。
示例性的,在检测到预设诊断工具发送的信息获取请求时,由该预留分区读取该日志文件并发送至预设诊断工具。其中,预设诊断工具可以是用于诊断终端不开机、终端死机或者终端开机卡住等问题的程序。
可选的,在保存开机流程中引发开机失败故障的目标信息之后,清除数据分区(又称为data分区)内的目标数据,控制终端重启。终端的开机流程卡在开机动画阶段可能是存在引发开机动画播放异常现象的文件或文件夹,可以通过清除data中的这类文件或文件夹而使终端能够成功开机。例如,可以通过对历史故障数据的分析,确定导致终端开机流程卡在开机动画的文件或文件夹的特征信息(包括文件名或后缀名等)。在检测到开机失败后,由数据分区内删除符合上述特征信息的文件或文件夹,然后,控制终端重启,检测是否克服了终端开机失败的问题。若终端成功开机,则将上述保存有开机流程中引发开机失败故障的目标信息以日志文件的形式输出至设定服务器,以便于终端厂商的研发人员获取各个终端的不开机故障对应的关键信息。可以理解的是,终端向设定服务器发送日志的方式可以有很多种,本申请实施例并不作具体限定。例如,可以通过可以wifi上传日志至终端厂商的设定服务器。又如,还可以通过短信方式或者移动数据的方式等。
此外,还可以通过刷机的方式使终端开机成功,且保存有目标信息的开机异常日志被预先保存在预留分区,该预留分区内的数据不会因刷机操作而丢失。
本申请实施例的技术方案,在终端开机失败后,通过清除数据分区内的目标数据的方式,尝试修复导致终端开机失败的原因,检测终端能否成功开机,若开机成功,则将目标信息以日志文件(又可以称为开机异常日志)的形式输出至设定服务器,以便于终端厂商获取到该日志文件,从而,为研发人员确定终端开机异常的原因提供数据基础,进而,可以有效地优化开机流程。
图5为本申请实施例提供的一种检测终端开机异常问题的装置的结构框图,该装置可由软件和/或硬件实现,一般集成在终端中,可通过执行检测终端开机异常问题的方法监控上层开机流程的完整阶段。如图5所示,该装置包括:
启动检测模块510,用于检测到init进程启动;
信息获取模块520,用于通过预设检测服务获取开机动画进程的状态信息,其中,预设检测服务对应的程序代码在init进程解析init.rc文件时执行;
信息存储模块530,用于根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
本申请实施例提供一种检测终端开机异常问题的装置,在检测到init进程启动时,通过预设检测服务获取开机动画进程的状态信息,其中,该预设检测服务对应的程序代码在init进程解析init.rc文件时执行;根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。通过上述技术方案,可以在开机流程进入安卓层面后即启动预设检测服务以检测开机状态,并在开机失败时获取整个流程中的导致不开机问题的日志进行存储,可以将日志回传至终端厂商;可以覆盖开机流程的完整阶段,避免出现漏检测的问题,此外,保存导致开机失败的目标信息,还可以便于终端开发人员分析导致不开机问题的原因,进而优化终端的开机流程。
可选的,信息获取模块520具体用于:
通过预设检测服务周期性地获取开机动画服务的属性信息,根据所述属性信息确定开机动画进程的状态信息。
可选的,信息获取模块520中根据所述属性信息确定开机动画进程的状态信息步骤具体包括:
获取开机动画进程的执行时间;
在所述执行时间小于所述预设时间阈值时,判断所述属性信息是否为代表开机动画结束的属性值;
若是,则确定开机动画进程处于结束状态;
否则,确定开机动画进程处于执行开机动画服务状态。
可选的,还包括:
开机判断模块,用于在判断所述属性信息是否为代表开机动画结束的属性值之后,若在所述执行时间超过所述预设时间阈值之前,检测到所述开机动画进程处于结束状态,则确定开机成功;
若在所述执行时间超过所述预设时间阈值之前,所述开机动画进程始终处于执行开机动画服务状态,则确定开机失败。
可选的,信息存储模块530具体用于:
在基于所述状态信息确定开机失败时,获取开机流程对应的开机异常日志,其中,开机异常日志包含整个所述开机流程中导致终端开机失败的目标信息;
将所述开机异常日志存储于预留分区,其中,所述预留分区的读写频率低于设定阈值,且在刷机时,所述预留分区不会被擦除。
可选的,还包括:
文件输出模块,用于在保存开机流程中引发开机失败故障的目标信息之后,在检测到满足预设条件时,获取所述目标信息并以日志文件的形式输出。
可选的,文件输出模块具体用于:
清除数据分区内的目标数据,控制终端重启;
若所述终端再重启后成功开机,则将所述目标信息以日志文件的形式输出至设定服务器。
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行检测终端开机异常问题的方法,该方法包括:
检测到init进程启动;
通过预设检测服务获取开机动画进程的状态信息,其中,预设检测服务对应的程序代码在init进程解析init.rc文件时执行;
根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如cd-rom、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如dram、ddrram、sram、edoram,兰巴斯(rambus)ram等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的检测终端开机异常问题的操作,还可以执行本申请任意实施例所提供的检测终端开机异常问题的方法中的相关操作。
本申请实施例提供了一种终端,该终端内具有操作系统,该终端中可集成本申请实施例提供的检测终端开机异常问题的装置。图6为本申请实施例提供的一种终端的结构示意图。如图6所示,该终端包括存储器610及处理器620。所述存储器610,用于存储计算机程序等;所述处理器620读取并执行所述存储器610中存储的计算机程序。所述处理器620在执行所述计算机程序时实现以下步骤:检测到init进程启动;通过预设检测服务获取开机动画进程的状态信息,其中,预设检测服务对应的程序代码在init进程解析init.rc文件时执行;根据所述状态信息确定开机失败时,保存开机流程中引发开机失败故障的目标信息。
上述示例中列举的存储器及处理器均为终端的部分元器件,所述终端还可以包括其它元器件。以智能手机为例,说明上述终端可能的结构。图7是本申请实施例提供的一种智能手机的结构框图。如图7所示,该智能手机可以包括:存储器701、中央处理器(centralprocessingunit,cpu)702(又称处理器,以下简称cpu)、外设接口703、rf(radiofrequency,射频)电路705、音频电路706、扬声器711、触摸屏712、电源管理芯片708、输入/输出(i/o)子系统709、其他输入/控制设备710以及外部端口704,这些部件通过一个或多个通信总线或信号线707来通信。
应该理解的是,图示智能手机700仅仅是终端的一个范例,并且智能手机700可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
下面就本实施例提供的集成有检测终端开机异常问题的装置的智能手机进行详细的描述。
存储器701,所述存储器701可以被cpu702、外设接口703等访问,所述存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器包括终端厂家定制的预留分区,该预留分区的读写频率低于设定阈值,且在刷机时,该预留分区不会被擦除。在存储器701中存储计算机程序,还可以存储日志文件等。
外设接口703,所述外设接口703可以将设备的输入和输出外设连接到cpu702和存储器701。
i/o子系统709,所述i/o子系统709可以将设备上的输入输出外设,例如触摸屏712和其他输入/控制设备710,连接到外设接口703。i/o子系统709可以包括显示控制器7091和用于控制其他输入/控制设备710的一个或多个输入控制器7092。其中,一个或多个输入控制器7092从其他输入/控制设备710接收电信号或者向其他输入/控制设备710发送电信号,其他输入/控制设备710可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮。值得说明的是,输入控制器7092可以与以下任一个连接:键盘、红外端口、usb接口以及诸如鼠标的指示设备。
触摸屏712,所述触摸屏712是用户终端与用户之间的输入接口和输出接口,将可视输出显示给用户,可视输出可以包括图形、文本、图标、视频等。
i/o子系统709中的显示控制器7091从触摸屏712接收电信号或者向触摸屏712发送电信号。触摸屏712检测触摸屏上的接触,显示控制器7091将检测到的接触转换为与显示在触摸屏712上的用户界面对象的交互,即实现人机交互,显示在触摸屏712上的用户界面对象可以是运行游戏的图标、联网到相应网络的图标等。值得说明的是,设备还可以包括光鼠,光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸。
rf电路705,主要用于建立手机与无线网络(即网络侧)的通信,实现手机与无线网络的数据接收和发送。例如收发短信息、电子邮件等。具体地,rf电路705接收并发送rf信号,rf信号也称为电磁信号,rf电路705将电信号转换为电磁信号或将电磁信号转换为电信号,并且通过该电磁信号与通信网络以及其他设备进行通信。rf电路705可以包括用于执行这些功能的已知电路,其包括但不限于天线系统、rf收发机、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、codec(coder-decoder,编译码器)芯片组、用户标识模块(subscriberidentitymodule,sim)等等。
音频电路706,主要用于从外设接口703接收音频数据,将该音频数据转换为电信号,并且将该电信号发送给扬声器711。
扬声器711,用于将手机通过rf电路705从无线网络接收的语音信号,还原为声音并向用户播放该声音。
电源管理芯片708,用于为cpu702、i/o子系统及外设接口所连接的硬件进行供电及电源管理。
本申请实施例提供的终端,可以在开机流程进入安卓层面后即启动预设检测服务以检测开机状态,并在开机失败时获取整个流程中的导致不开机问题的日志进行存储,可以将日志回传至终端厂商;可以覆盖开机流程的完整阶段,避免出现漏检测的问题,此外,保存导致开机失败的目标信息,还可以便于终端开发人员分析导致不开机问题的原因,进而优化终端的开机流程。
上述实施例中提供的检测终端开机异常问题的装置、存储介质及终端可执行本申请任意实施例所提供的检测终端开机异常问题的方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的检测终端开机异常问题的方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。