重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果您使用的是华为手机,应用出现无法打开的现象,可能是应用版本过旧、应用权限未开通,系统内存不足等原因,请您按照以下方法排查:
10年积累的成都网站制作、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有申扎免费网站建设让你可以放心的选择与我们合作。
1 重启应用
进入手机设置,搜索进入 应用管理界面,找到无法打开的应用,点击强行停止即可强制退出该应用。然后重新打开该应用。
2 检查更新
某些应用适配可能对手机系统的版本有要求,建议您检查更新手机系统版本:
进入手机设置,搜索软件更新或系统和更新,点击检查更新,如果有新版本建议您提前备份数据(QQ、微信等第三方应用需单独备份),及时升级到最新版本。
温馨提醒:系统升级后开机时,系统会对手机中的应用程序进行优化,需要消耗一定的开机时间;开机后系统优化过程还会继续,此时手机负载较高,使用应用时可能会出现卡顿情况。
3 检查应用兼容性
如果是第三方应用无法打开,您可以在应用市场将应用更新到最新版本,并查看应用是否兼容手机最新版本,或与同安卓版本手机对比。如果应用市场提示不兼容,或者同类手机也出现此问题,可能是应用自身问题,建议您尝试咨询应用开发商寻找解决方案。
4 检查应用权限
如果手机禁止了第三方软件的某些权限可能会导致应用无法打开。您可以在权限管理中打开权限:进入手机设置,搜索进入权限管理,找到需要设置的应用,打开相关权限。
5 清除应用数据
可能是应用缓存文件出现异常,您可以删除应用数据尝试:打开设置,搜索进入应用管理,找到具体应用,然后点击存储 删除数据 。
提醒:删除数据操作可能会将部分应用数据删除,如“微信、旅行青蛙”,建议您提前备份数据。
6 卸载重装应用
您可以卸载重装应用使用:在桌面上长按应用图标,点击卸载。然后在华为应用市场重新下载安装使用。
提醒:卸载重装会导致应用数据被删除,如“微信、旅行青蛙”,建议您提前备份数据。
7 尝试卸载更新Android System Webview(仅限GMS设备)
对于 GMS的设备(点击设置 应用 应用管理,点击三个点 显示系统进程,搜索“Google”。如果可以搜索到Google服务框架或Google Play 服务等应用,则说明您的设备已集成GMS;如果没有搜索到,则您的设备未预装GMS),可能是更新了Webview后存在兼容性问题导致应用运行异常。请尝试卸载更新Android System Webview :
进入手机设置 应用 应用管理,然后单击右上角的三个点选择显示系统进程。找到Android System Webview进入;
(1)若启用按钮可选择,点击启用。
(2)若右上角存在三个点图标,则点击此图标并选择卸载更新。然后重新启动设备。
8 清理手机存储空间
系统内存不足可能会导致一些占用内存大的应用出现无法打开的现象,建议您及时清理手机存储空间。建议保证可用内存至少剩余20%。
9 恢复出厂设置
建议您备份好数据后(QQ、微信等第三方应用需单独备份)将手机恢复出厂设置:
进入手机设置,搜索恢复出厂设置,根据手机界面提示完成恢复出厂设置操作。
如果问题仍无法解决,请您提前备份好数据(QQ、微信等第三方应用需单独备份),携带购机凭证前往华为客户服务中心检测。
AMS主要功能:
AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作。还负责启动或杀死应用程序的进程。
WMS主要功能:
为所有窗口分配Surface。
管理Surface的显示顺序、尺寸、位置。
管理窗口动画。
输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息。
PWS主要功能:
PMS 用来管理跟踪所有应用APK,包括安装,卸载,解析,控制权限等。
SystemServer也是一个进程,包括AMS、PMS、WMS等等。
zygote意为“受精卵“。Android是基于Linux系统的,而在Linux中,所有的进程都是由init进程直接或者是间接fork出来的,zygote进程也不例外。
App进程是用户点击桌面icon时,通过Launcher进程请求SystemServer,再调用Zygote孵化的。
①点击启动一个App,Launcher进程采用Binder IPC向ActivityManagerService发起startActivity请求;
②ActivityManagerService接收到请求后,向zygote进程发送创建进程的请求;
③Zygote进程fork出新的子进程,即App进程;
④App进程通过Binder IPC向sytem_server进程发起绑定Application请求;
⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;
⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;
⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。
⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。
备注:
Launcher,PMS,Zygote,App进程是三个独立的进程,相互通信就需要使用进程间通信机制。与Zygote通信是使用的socket通信,Launcher,PMS,App进程间使用的是Binder机制。
最近在做项目适配工作,需要打开手机中设置页面进行设置。国内 rom 都是自己改过的,适配起来也是稍微的麻烦。同一个功能不同的手机品牌界面都不一样,纯粹的用 adb 命令以及 logcat 来查看每个手机对应的页面的 Activity 或者 Fragment 以及包名。简单的记录一下过程。
在控制台中输入一下命令,可以查看当前页面显示Activity的全部信息
拿小米手机 (Android 6.0, MIUI 9.2 )的锁屏和密码这个功能页面来说。在控制台输入命令之后,可以看到一长串的信息。
可以看到当前的 Activity 的包名 com.android.settings 以及 Activity 的名称 SubSettings 。这样不久可以通过隐士调用打开页面了么? 直接上手操作一波。
结果很尴尬的,打开的是空白页,这又是怎么回事?而且跳转了几个页面在同时输入上边命令,也是显示这个页面 SubSettings 。这样就开始疑惑了,想到这应该是小米在上边改动,通过Fragment来实现相关的功能了。先看看原生的系统源码。(网上源码地址: )。打开源码,发现没有实现什么具体的东西。
但是看到源码中 protected boolean isValidFragment(String fragmentName) 确定了这其实就是一个 Fragment 的容器。好那再接着看 dumpsys 命令的返回信息。
看到 Activie Fargment MiuiSecuritySettings 。 但是又不知道包名,因为手机厂商各种改,不一定包名就是 settings 。就有通过 Android Studio Logcat 找到了解决方案。链接手机的时候 Logcat 打印了各种系统的 log 。 Ctrl + F 直接搜索一下 MiuiSecuritySettings 。果然找到了
最后,通过如下的方法,启动小米系统的锁屏和密码设置界面
其他的页面,应该也是大同小异的处理思路,只能一个个手机来实际适配了,并没有找到一个很好的解决办法,挨。