分析Android 开机启动慢的原因

合集下载

android启动流程

android启动流程

android启动流程Android启动流程:Android是一款广泛使用的移动操作系统,其启动流程是一个相对复杂的过程,涉及到多个模块的加载和启动。

下面将详细介绍Android的启动流程。

1、开机自检(Boot)当手机开机时,首先进行开机自检。

在这个阶段,系统会检测硬件设备的状态,包括电池是否齐全、屏幕是否正常等。

如果硬件设备通过了自检,系统将会开始启动。

2、引导加载程序(Bootloader)开机自检完成后,系统会加载引导加载程序(Bootloader)。

引导加载程序是硬件平台的一部分,其主要作用是启动操作系统。

在加载引导加载程序的过程中,系统会自动检测手机的存储器设备,确定存储设备中是否有可用的引导文件。

3、Linux内核加载一旦引导加载程序找到可用的引导文件,系统将会加载Linux内核。

Linux内核是Android系统的核心组件,负责管理内存、文件系统、驱动程序等。

4、文件系统加载一旦Linux内核加载完成,系统将会加载文件系统。

Android系统使用的是基于Linux的文件系统,在这个过程中,系统会加载并初始化各个文件系统,包括根文件系统、系统文件系统、数据文件系统等。

5、初始化进程(Init)一旦文件系统加载完成,系统将会启动初始化进程(Init)。

初始化进程是Android系统的第一个进程,其作用是启动系统的各个进程和服务。

6、启动用户空间(System Server)在初始化进程启动后,系统会启动用户空间,加载系统的用户界面等组件。

7、启动应用程序一旦用户空间加载完成,系统将会启动应用程序。

应用程序是Android系统的核心功能,包括系统应用程序和用户安装的应用程序。

系统应用程序包括电话、短信、浏览器等,而用户安装的应用程序则是用户根据自己的需求下载和安装的。

8、应用程序启动完成一旦应用程序启动完成,系统将进入正常运行状态,用户可以通过界面操作手机。

总结:Android系统的启动流程是一个复杂而严密的过程,经过开机自检、引导加载程序、Linux内核加载、文件系统加载、初始化进程、启动用户空间、启动应用程序等多个步骤,最终实现用户界面的显示和应用程序的运行。

Android手机无限重启怎么办 Android手机重启原因分析

Android手机无限重启怎么办 Android手机重启原因分析

Android手机无限重怎么办 Android手机重启原因分析在使用手机的过程中难免会遇到各种各样的重启现象,不论是刷过机还是没刷机的手机使用时间一长难免会因为系统或者其他原因造成手机上各式各样的重启现象发生。

到底手机经常重启有什么办法解决呢?还是听小编慢慢道来吧。

一:电池原因1 电池松动:小V的电池送的很严重接触不好就会重启在断开的瞬间又连接上了所以导致会自动重启。

处理办法:用胶带神马的在电池触点正后方的手机壳处做加厚注意别太厚2 触点氧化:夏季大家都把电池放口袋或者包里面又或者沿海城市空气潮湿盐分比较大,容易氧化触点导致电池虚接或者假电充不满或者不耐用等情况。

处理办法:棉签蘸酒精少许擦拭触点干擦也行注意手机端不要弄湿了后果你懂的....3 电池信息:频繁充电或者一直线充导致电池频率等信息请进入刷机模式-高级-清空电池信息建议连续2次清空是清空后重启在进刷机模式清空最好在5%电量左右清一次100%时候清一次,另外建议买好一点的旅行充电器一会给图我用线充充满的电池明显用不过座充的,而且线充的100%电量用座充还可以充2小时左右才满。

二:system分区太小1 一些小盆友为了所谓的虚拟内存刷了一些增大内存软件其实是在玩火那是在挤榨手机系统内存导致手机无限重启解决办法:T卡回官方2 开启内部SWAP挤榨了system分区关闭SWAP试试如果解决那么就开启外部SWAP吧3 DATA分区或者DATA2 什么的挤榨了系统分区最近的一些ROM开启的自动SWAP什么的可能存在分区不合理情况最后导致无限重启这条仅是怀疑没证据....处理办法:可以LBE 或者其他软件精简ROM自带的一些没必要的功能软件记得先备份三:运行内存太低1 没开启SWAP 运行游戏导致重启这个打架参考SWAP帖子吧就不详细讲了2 后台太多导致运存不够用LBE的自启管家关闭一些不常用的软件防止后台自动加载3 开启的外部SWAP是借用SD分区来完成的但是一些SD卡读取速度有问题导致重启解决办法:格式化SD卡删除分区然后重新分区装软件记得备份重要资料也可以完全复制SD到电脑格式化完成后再复制回去记得重新分区四:主板问题这个只是提到一下具体有问题只能去售后不要去手机店修理那不专业啊而且也没原厂件五:ROM问题一些分区不合理或者自动SWAP不合理的可以尝试换ROM的方法来做排除文章来源安软市场 /news/1088.html。

手机维修常识学习

手机维修常识学习

手机维修常识学习原因1:首次开机慢。

由于首次开机,要做初始化的操作,例如 C8812 首次开机需要120秒。

请销售和维修人员耐心等待,不要认为手机定屏或者死机。

首次开机以后,再次开机时间在5s左右。

原因2:电池过度放电。

当电池电压过低时,电池处于低电压保护状态(常见原因)。

现象:手机无法开机属于正常现象,充电时仅有充电的灯不断闪烁。

解决措施:确认手机是否正常:取下电池电池,手机插充电器开机,确认开机是否正常。

如果手机不放电池,手机插充电器可以正常开机;手机放入电池充电30分钟,通常可以正常开机。

原因3:电池,数据线,或充电器损坏解决措施:更换电池、数据线或者充电器二、LCD黑屏和不开机原因1: LCD黑屏。

LCD物料单体的故障,而手机主板没有故障。

现象:插充电器或者电池开机,马达有震动,屏幕的边缘有亮光,同时指示灯有变亮。

解决措施:更换LCD原因2:不开机。

开机马达无震动,LCD屏幕的的背光不亮,电源指示灯不亮;开机大电流大于500mA或者小于100mA:解决措施:给用户换机或者更换单板三、无信号原因1:用户反馈无信号(实际信号正常)。

用户所在地区网络信号差等,手机本身无故障。

解决措施:通过对比华为同型号手机的信号强度,方法:菜单键--->系统设置-->关于手机--->状态信息--->信号强度。

电信,联通和移动制式的手机信号强度,一般会大于-85dB,手机信号是否正常:要对比华为同型号手机的信号强度,最好放在非金属的桌面上,不要放在手上,正常情况两者的差异小于8dB(8dB以内属于正常现象);大于8dB,比较异常。

原因2:无信号,无法打电话(CDMA手机)。

用户在系统设置中,将“自动”改为“本地系统”,导致用户在漫游状态下不能使用。

解决措施:在修改手机中菜单键--->系统设置--->无线和网络-->移动网络-->系统选择-->自动原因3:网络只有2G业务,即只显示1X时候,用在使用数据业务的时候,无法接听和拨打电话。

Android Service如何开机自启动以及自启动失败原因

Android Service如何开机自启动以及自启动失败原因

Android Service如何开机自启动以及自启动失败原因本文主要介绍Android Service如何开机自启动、自启动失败的原因、adb命令发送BOOT_COMPLETED。

应用程序是否可以在安装后自启动,没有ui的纯service应用如何启动?1、Android应用如何开机自启动(1)、在AndroidManifest.xml中注册AndroidManifest.xml中注册BOOT_COMPLETED Action注意不仅要添加android.intent.action.BOOT_COMPLETED对应的action,还需要添加对应的uses-permission(2)、Receiver接收广播进行处理public class BootBroadcastReceiver extends BroadcastReceiver {public static final String TAG = "BootBroadcastReceiver";@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction().toString();if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {// u can start your service hereToast.makeText(context, "boot completed action has got", Toast.LENGTH_LONG).show();return;}}}2、自启动失败的原因接收不到BOOT_COMPLETED广播可能的原因(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。

智能手机操作系统性能分析及优化策略

智能手机操作系统性能分析及优化策略

智能手机操作系统性能分析及优化策略随着智能手机在我们的日常生活中越来越占据重要地位,对于智能手机操作系统的需求也变得越来越高。

对于操作系统来说,性能一直是用户关注的重点。

因此,本文将从操作系统的角度出发,分析智能手机的性能问题,并提出相关的优化策略。

第一章 Android操作系统性能分析由于Android操作系统市场占有率最高,因此我们首先对Android操作系统进行性能分析。

1.1. 系统启动时间过长当用户按下手机的开机键时,Android操作系统需要启动一系列的程序和服务。

这些服务可能包括加载应用程序、启动蓝牙服务等。

由于Android系统启动的服务较多,因此,系统的启动时间相对较长。

但是,如果启动时间过长,可能会影响用户的体验。

因此,我们需要针对系统启动时间过长的问题提出优化策略。

优化策略:(1)通过关闭不必要的服务程序,减少系统启动时的负担。

(2)将某些服务延迟加载,减少其对启动速度的影响。

1.2. 应用程序启动时间过长当用户启动某个应用程序时,Android系统需要加载一些依赖库文件和资源。

如果应用程序启动时间过长,用户会感到不太满意。

因此,针对应用程序启动时间过长的问题,我们需要找出原因,并提出优化策略。

优化策略:(1)通过优化应用程序的代码,减少加载时间。

(2)将应用程序相关的所有参数和文件缓存到内存中,在下次启动时从缓存中读取,加快启动速度。

1.3. UI响应速度慢当用户滑动应用程序的界面时,应用程序需要及时响应,否则用户会感到疲劳。

然而,如果界面响应速度慢,用户的体验会受到很大的影响。

因此,我们需要针对UI响应速度慢的问题提出优化策略。

优化策略:(1)通过优化界面代码,减少代码执行时间。

(2)将能够异步加载的操作异步化,减轻UI线程的压力,从而加快页面响应速度。

第二章 iOS操作系统性能分析除了Android操作系统外,iOS操作系统也是目前最受欢迎的手机操作系统之一。

因此,我们也需要对iOS操作系统进行性能分析。

安卓手机开不了机

安卓手机开不了机

安卓手机开不了机引言安卓手机是我们日常生活中不可或缺的工具,但有时候我们可能会遇到手机开不了机的情况。

这种情况可能是由于软件问题、硬件问题或者其他一些不可预测的因素引起的。

在本文中,我们将讨论安卓手机开不了机的常见原因和可能的解决方法。

常见原因软件问题1.系统崩溃:安卓系统可能因为各种原因崩溃,导致手机无法正常开机。

这可能是由于错误的系统更新、不兼容的应用程序、病毒感染等引起的。

2.应用程序冲突:如果您最近安装了新的应用程序,并且手机无法开机,那么可能是由于应用程序与其他应用程序或系统文件冲突引起的。

3.恶意软件感染:恶意软件可能会破坏您的安卓系统,导致手机无法正常开机。

这种情况下,您的手机可能会出现其他异常行为,如频繁弹出广告、关机重启等。

硬件问题1.电池问题:如果您的安卓手机电池电量低至无法支持正常开机,那么您需要先充电一段时间再尝试开机。

2.电源按钮故障:电源按钮故障可能导致手机无法正常开机。

您可以尝试长按电源按钮,然后再松开,或者将手机连接到电源适配器上并充电。

3.其他硬件故障:其他硬件故障如主板故障、显示屏问题等也可能导致手机无法开机。

这种情况下,您可能需要寻求专业技术支持或者将手机送修。

解决方法软件问题解决方法1.强制重启:长按手机的电源按钮约10秒钟,直到手机重新启动。

这种方法能够解决一些临时的软件问题。

2.进入恢复模式:不同手机品牌可能有不同的进入恢复模式的方法。

一般情况下,您可以按住音量加和电源按钮直到手机震动,然后松开电源按钮但继续按住音量加按钮。

在恢复模式下,您可以尝试清除缓存、恢复出厂设置等操作来解决问题。

3.使用安全模式:进入安全模式可以排除第三方应用程序的干扰。

通常情况下,您可以长按电源按钮进入关机页面,然后长按“关机”选项并选择“进入安全模式”。

在安全模式下,您可以卸载最近安装的应用程序或者进行其他操作。

4.手机回滚:如果您在最近的系统更新后遇到问题,您可以尝试回滚系统到之前的版本。

移动应用开发技术问题排查指南

移动应用开发技术问题排查指南

移动应用开发技术问题排查指南移动应用开发是当前技术发展的热点,随着移动互联网的普及和用户需求的增加,越来越多的企业和个人开始投入移动应用开发领域。

然而,随之而来的是各种技术问题的出现,从而给开发者带来了不小的挑战。

本文将为大家提供一个移动应用开发技术问题排查指南,帮助开发者们有效解决各种开发过程中可能遇到的问题。

一、应用启动慢应用启动速度是用户体验的重要因素之一,如果应用启动慢,很容易让用户流失。

针对应用启动慢的问题,可以从以下几个方面进行排查:1. 内存使用过高:应用启动时,如果内存使用过高,会导致应用启动缓慢。

可以通过使用内存优化工具,如Xcode的Instruments工具,对应用进行内存调试,找出内存占用过高的地方,并进行优化。

2. 冷启动过程过长:冷启动指的是应用第一次启动的过程,因为需要加载各种资源,所以通常比较慢。

可以通过优化应用的启动流程,减少不必要的初始化操作,提高启动速度。

3. 代码逻辑问题:有时候应用启动慢是因为代码逻辑问题导致的。

可以通过打日志的方式,观察代码执行的时间和顺序,找出潜在的问题所在。

二、崩溃问题应用崩溃是开发过程中常见的问题,给开发者带来了不小的困扰。

崩溃问题排查可以从以下几个角度进行:1. 内存问题:内存泄漏是导致应用崩溃的常见原因之一。

可以通过使用工具来检测内存泄漏,如Xcode的Instruments工具中的Leaks工具,找出内存泄漏的地方,并进行修复。

2. 线程问题:多线程开发常常会带来一些问题,如竞态条件、死锁等。

可以使用调试工具来捕获线程相关的问题,并进行修复。

3. 异常处理:良好的异常处理机制可以提高应用的稳定性。

可以在代码中添加适当的异常处理,捕获异常并进行处理,避免应用崩溃。

三、网络问题移动应用不可避免地会涉及到网络请求,网络问题的排查可以从以下几个方面进行:1. 网络连接问题:通过检查网络连接是否正常,如Wi-Fi是否连接、数据是否开启等,确定网络连接是否存在问题。

安卓手机无法开机的6种解决方法

安卓手机无法开机的6种解决方法

安卓手机无法开机的6种解决方法现在安卓智能机十分普遍,但是也容易出现多重问题。

关于手机不能开机是很多朋友都碰到的问题。

那么手机不能开机怎么办?不用担心,下面就为大家介绍安卓手机突然无法开机的6种解决方法,希望可以帮到大家。

安卓手机无法开机的原因1.手机电量过放无法开机有时候晚上睡一觉起来手机就不能开机了,相信大部分人都遇到过。

笔者自己也遇到过。

其实这因为手机过度放电造成的。

通俗点说就是手机电池一点电都没了,导致无法开机。

2.开机卡Recovery界面无法开机搜索因为误操作手机进入Recovery模式,导致手机无法重启也无法退出。

3.开机卡在界面无法开机智能机在使用过程中卡在开机动画界面,建议尝试长按电源键12秒强制关机,再重启手机;若未能解决你的问题,请携带购机发票、保修卡和手机前往就近客户服务中心检测处理。

4.手机开机提示“进入RF测试”一般如果手机提示进入RF测试模式,那多半是耳机孔进异物了或电路板进水短路了。

安卓手机无法开机的解决方法解决方法1:有电情况下关机后不能开机1、估计不少人遇到我这个情况:就是有电的情况下关机,但是隔一段时间重新开机,发现不能开机了,充电的时候,等也不亮了,更可能的情况是,智能机竟然是集成的电池,不能取下来,难道真的没办法?非得去修理店?没必要,见下面。

2、遇到这个情况,可能是因为刷过机,系统不是很稳定出现的问题,这时候为了成功解决这个问题,将手机充电器插上(最好是直充,这样更好些)。

3、这时候充电指示灯可能是不亮的,但是保证你的电源连接通常即可。

然后同时按住“电源键”和“音量+”键,直到手机震动3下以上。

4、重新按住电源键,进行开机,看看是不是解决了你的大问题?我这里使用这个方法成功解决自己的问题。

希望这个能够成为你开机的有用方式。

解决方法2:有电关机后不能开机的可拆卸电池1、上面方法一中,因为是集成电池,解决起来感觉没有那么给力,这里非集成电池情况下,就更容易解决了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开机启动花了40多秒,正常开机只需要28秒就能开机起来。

内核的启动我没有去分析,另一个同事分析的。

我主要是分析从SystemServer启来到开机动画结束显示解锁界面的这段时间,也就是开机动画的第三个动画开始到结束这段时间,这是个比较耗时阶段,一般都在17秒左右(见过牛B的手机,只需5秒)。

SystemServer分两步执行:init1和init2。

init1主要是初始化native的服务,代码在sy stem_init.cpp的system_init,初始化了SurfaceFlinger和SensorService这两个native的服务。

init2启动的是java的服务,比如ActivityManagerService、WindowManagerService、PackageManagerService等,在这个过程中PackageManagerService用的时间最长,因为PackageManagerService会去扫描特定目录下的jar包和apk文件。

在开机时间需要40多秒的时,从Log上可以看到,从SurfaceFlinger初始化到动画结束,要27秒左右的时间,即从SurfaceFlinger::init的LOGI("SurfaceFlinger is starting")这句Log到void SurfaceFlinger::bootFinished()的LOGI("Boot is finished (%ld ms)", long(ns 2ms(duration)) ),需要27秒左右的时间,这显然是太长了,但到底是慢在哪了呢?应该在个中间的点,二分一下,于是想到了以启动服务前后作为分隔:是服务启动慢了,还是在服务启动后的这段时间慢?以ActivityManagerService的Slog.i(TAG, "System now ready")的这句Log为分割点,对比了一下,在从SurfaceFlinger is starting到System now read y多了7秒左右的时间,这说明SystemServer在init1和init2过程中启动慢了,通过排查,发现在init1启动的时候,花了7秒多的时间,也就是system_init的LOGI("Entered system _init()")到LOGI("System server: starting Android runtime.\n")这段时间用了7秒多,而正常情况是400毫秒便可以初始化完,通过添加Log看到,在SensorService启动时,用了比较长的时间。

不断的添加Log发现,在启动SensorService时候,关闭设备文件变慢了,每次关闭一个/dev/input/下的设备文件需要100ms左右,而SensorService有60~70次的关闭文件,大概有7s左右的时间。

调用流程是:
frameworks/base/cmds/system_server/library/system_init.cpp: system_init->SensorServi ce::instantiate
frameworks/native/services/sensorservice/SensorService.cpp: void SensorService::onFi rstRef()->SensorDevice& dev(SensorDevice::getInstance())
hardware/libsensors/SensorDevice.cpp: SensorDevice::SensorDevice()->sensors_open hardware/libsensors/sensors.cpp: open_sensors->sensors_poll_context_t
sensors_poll_context_t执行打开每个传感器设备时,遍历/dev/input/目录下的设备文件,以匹配当前需要打开的设备,遍历文件是在
hardware/libsensors/SensorBase.cpp的openInput下实现,如果打开的设备文件不是正在打开的设备文件,会执行下面语句的else部分:
if (!strcmp(name, inputName)) {
strcpy(input_name, filename);
break;
} else {
close(fd);
fd = -1;
}
close每次需要100ms左右,每次打开传感器部分都执行去这样的操作,导致了在这有大概7s左右的延迟。

优化完这段时间后,系统启动变快了7秒,但还是慢,因为对比可以发现:开机28秒:
04-16 16:14:22.205 140 343 I SurfaceFlinger: Using composer version 1.0
04-16 16:14:34.167 527 542 I ActivityManager: System now ready
04-16 16:14:39.089 140 605 I SurfaceFlinger: Boot is finished (16985 ms)
开机34秒:
04-18 15:32:55.565 I/SurfaceFlinger( 242): SurfaceFlinger is starting
04-18 15:33:05.214 I/ActivityManager( 622): System now ready
04-18 15:33:17.658 I/SurfaceFlinger( 242): Boot is finished (22091 ms)
可见还是慢了6秒。

但这6秒慢在了似乎是在服务启动后的时间,这个时候比较难分析了,原因是这是所有的服务起来了,而且发出了bootcomplete广播,应用也开始起来,但还没用解锁,开始以为是Launcher起来慢了,但换了一个Google原始的Launcher进去,并没有变快。

我们用两个版本的手机,W制式的跟TD的,过来几天发现TD的手机比W的开机快,而且TD的28秒左右能起来,但W的却要34秒,问了一下驱动的同事,W跟TD的并没有什么区别,所以除了Modem不一样以外,其他的都一样。

找了一天,依然毫无结果。

从L og中看,都只这慢一点,那慢一点,只有在Packmanager在扫描包的过程中,W+GSM需要6秒左右的时间,而TD+GSM只需要3秒左右的时间,但也不至于花费6秒的时间。

但软件版本是一样的,猜测是硬件的问题,但硬件都是一样的,除了Modem不一样以外,开始怀疑Modem,W+GSM是正常的开机模式,而TD+GSM却是在mbp模式下开机的,弄成一样的开机模式,依然没有改变两个开机时间。

到最才发现W的手机用的是16G的EMMC,而TD的手机用的是32G的EMMC,而且32G的EMMC比16G的EMMC读写速度快,以为找到了原因,结果很失望,通过电子的同事,把EMMC对换了一下,开机速度还是没有变化,快的还是快,慢的还是这么慢,晕,白高兴了一场,但辽僖卜⑾至薊MMC读写速度是不一样的,至少不是一无所获。

折腾了一天,也就得到个这样的结果!!!
过来一段时间以后,发现W的手机也变好了,28秒就能开机起来了,这是多么兴奋的是呀,不用解,问题就好了!可惜好景不长,没过多久,发现W的手机开机时间又变回33
秒了,这还真让人郁闷,于是用抓Log看下,结果就诧异了,从SurfaceFlinger is startin g到Boot is finished用是时间还是17秒左右,并没有变长呀!这是什么原因呢?同过实时的抓取LOG发现,28秒能开机起来的时候,Boot is finished这句LOG一打出,解到了解锁界面,但33秒是,却还等了一会才有解锁界面,难怪!一问,才知道他们在Boot is fini shed加了一句usleep(5*1000*1000),原因是不这样做,解锁在开机起来后滑不动或者会卡顿,所以加了5秒的延迟。

相关文档
最新文档