A. app的启动白屏解决
在网上搜索了许多关于app启动白屏的文章大致分为两类
第一种是在style的app的theme 里设置
这种设置在点击桌面点击app时给人一种很迟钝的感觉 反正我不会用这种方式
第二种方法是在app的theme里设置
然后把这个theme设置给application
接下来修正一下网上的一问题
假设app 有 A->B->C这三个简单的层级 A是启动页(打开app的第一个activity)
1.有人说把这个theme设置给A界面的activity 如果这样设置 假如你的app 在B或者C界面 你把app切换到后台开几个站内存的app 让自己的app被回收后再切换回来 你会发现app会白屏或者黑屏一会(颜色取决于你的主题)
2.有人说吧这个theme设置给 application 如果这样设置会引起activity的背景错乱 如actionbar出现launch_bg这张图片和别的奇怪的问题 应为actionbar等系统控件也引用了默认的theme 所以会出现那些奇怪的图片
3.有人为了解决二中出现的问题说在activity的setcontenview前从新设置window的背景 至少我那样试没有成功 还说通过流的方式设置window来解决 图片不能释放的问题 我是真没找到这种方法(如果有人知道请告诉我下)
下说说我的解决办法吧
首先是APP的正常theme
首次加载activity的theme
新建一个BaseActivity类
新建的Activity都继承至这个BaseActivity就行
下面来说说为什么会出现白屏的情况尺扒毕吧 (这是网上查找的说法)
当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,怎么办?这就有了Starting Window的概念,也可以称之为Preview Window。
Starting Window就是一个用于在应用程序进程创建并初始化成功前显示的临时窗口,拥有的Window Type是TYPE_APPLICATION_STARTING。在程序初始化完成前显示这个窗口,以告知用户系统已经知道了他要打开这个应用并做出了响应,当程序此顷初始化完成后显示用户UI并移除这个窗口。
这个Starting Window我们都见过,不过可能没留意过,其实就是开启程序时黑屏的那个窗口,够丑的。不过也没陵芹办法,每个程序的界面都不是同的,系统只有默认显示一个很简单的窗口了。
如果所谓的Starting Window只是一个黑屏的窗口的话,那这个功能未免也太鸡肋了。其实系统是可以根据每个程序的Theme显示不同的样子的。
启动应用的时候,虽然我们的程序还没初始化,但程序内的组件可是在程序安装的时候就被系统分析注册了的。我们可以针对每个Application和Activity设置不同的Theme,系统就是根据这个Theme初始化Starting Window的。Window布局的顶层是DecorView,Starting Window就是显示一个空的但是应用了Activity指定的Theme(如果Activity没有指定就用Application的)的DecorView。
在Theme中可以指定很多东西,如ActionBar的样式,窗口的背景,Activity的图标等,通过给Activity指定Theme,系统就可以在我们的应用初始化完成之前将这个Theme应用到Starting Window,这样看起来就像我们的应用已经启动起来了,只是数据内容还没有初始化好。
所以,如果你的Activity的背景只是简单的纯色的话,最好直接通过Theme把它应用到Activity的Background,而不是设置为顶层Layout的背景,如果真的需要给顶层Layout设置背景,也可以给android:windowBackground设置一个和Activity UI相似的背景,为了防止Overdraw,在Activity的onCreate中通过setWindowBackground()再把窗口的背景设置为null。
系统在显示Activity前显示一个Starting Window仅发生在需要为启动这个Activity创建进程时,一般情况下是一个应用的入口Activity(包含Lanuncher中显示的图标进入的Activity及被其他应用调用的Activity)。
还有一种情况就是应用内有多个进程的情况(通过android:process),比如你的程序需要用单独的进程查看图片,当从你的应用的主进程进入图片浏览的Activity时,系统就会创建图片浏览的进程,如果图片浏览的Activity的需要使用的图标和Application指定的图标不一样的话就要注意了,系统显示图片进程中的Activity的Starting Window时不会使用这个Activity在Manifest中通过android:icon指定的图标,而只会使用Theme中指定的图标,如果没为这个Activity指定一个Theme或所指定的Theme中没有指定android:icon的话,系统会使用Application标签指定的android:icon,结果就是会看到Starting Window中显示一个图标,当Activity加载完后图标会变为Activity在Manifest中指定的android:icon,有一个变化的过程。
所以说 那个白屏是 系统创建了一个启动窗口 这里有一个连接说明 启动窗口在什么情况下创建
B. 为什么app点进去白屏
如果是偶尔几次打开软件出现的问题,可能是因为手机运行软件过多造成的卡顿,导致软件脊滚无响应,一般清理后台后,重新打开软件会解决。
如果只有打开某个软件时,手机才会白屏,并且使用上述方法无效。可能厅配是手机本身运行内存较小,无法运行这个软件。或者这个软件本身有问题,无法打开。这种情况无法解决。只能放弃使用粗埋该软件。此外,手机使用时间过长,造成卡顿,重启手机可以解决。需要注意的是,手机本身出现质量问题,建扮凳指议返厂维修。
解决APP白屏的办法:
手机:iphone13
系统:iOS 13
1、重新开关机后开启尝试。
2、进入手机设定-应用程序管理器-已下载-点击出现问题的应用-清除数据尝试。
3、卸载客户端重新安装尝试。
4、更新下手机系统版本尝试是否有改善。
5、备份手机数据(电话簿、短信息、多媒樱败余体文件等),恢复出厂设置(进入手机设定-重置-恢复出厂设定)。如果恢复出厂后问题依旧无枯袜法解决,将手机送至维修店进一步处理。
C. 手机打开app出现白屏什么原因
若使用的是vivo手机,请参考以下方法排查处理:
1、请重启手机,观察是否恢复使用。
2、系统新版本提升了兼容性和稳定性,优化了性能,请进入设置--系统升级(部分机型为:设置--我的设备--iQOO UI版本),查看系统版本信息。如果不是最新版本,建议升级体验。
3、多个应用程序在后台运行会占用过多内存或其他资源族轮,手机超出负荷可能会出现异常,建议使用"一键加速"清理后台应用。
4、若使用个别第三方软件时出现白屏,可能是该软件与系统不兼容导致,建议进入应用商店下载最新版本应用。
5、进入设置--系统管理/更多设置--备份与重置--还原所有设置--还原。
注:还原所有设置不会删除任何数据或媒体文件,仅会还原手机的所有设置(比中敬如设置的壁纸、解锁样式、WiFi、默认卖穗慎开启程序、桌面布局等),以及部分第三方应用帐号需要重新登录,请确认不影响软件使用后再进行操作。为了数据安全,操作前建议提前备份手机数据。(可以进入云服务--设备云备份--备份数据类型--系统数据--返回--立即备份可备份部分系统设置和桌面布局;云服务--数据同步--打开WLAN、蓝牙等可将数据同步到云服务)
6、若以上方法未能解决,请提前备份好设备数据,携带设备和购机凭证前往vivo客户服务中心检测。
温馨提示:建议前往时,提前电话咨询服务中心工作人员,确保工作人员在正常上班时间再前往,避免空跑,往返路上注意安全。