启动,关闭项目时,黑白屏问题及处理方法

在启动APP时,在视图加载完成的这段时间内,app显示的是window的背景图片,默然为主题设置的颜色
Theme.AppCompat.Light.NoActionBar 白色 或者night 黑色

处理方法

1、启动

<!--启动页主题-->
<style name="Loading" parent="AppTheme">
          <item name="android:windowFullscreen">true</item>
          <item name="android:windowBackground">@mipmap/loadback</item>
</style>

这样设置主题,点击桌面应用图标后,先加载这里设置的背景图片。

2、关闭应用

我的解决的方法是:通过异步,关闭应用。
@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
                finish();
            ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            am.restartPackage(getPackageName());

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    System.exit(0);
                    android.os.Process.killProcess(android.os.Process.myPid());
                }
            },800);   
        }
        return super.onKeyDown(keyCode, event);
    }


处理退出APP的黑白屏问题,还可以通过设置主题中<item name="android:windowIsTranslucent">true</item>  把最底层(我的是mainactivity)的activity主题此属性设置成true

这种方式遇到的问题是,如果项目中集成了侧滑finish页面,就会用到这个属性,但是某些机型会出现侧滑时,背景会直接显示桌面的情况。这时候就要把最底层的activity(mainactivity)的这个android:windowIsTranslucent属性修改成false。
这样就造成了,退出时,如果使用
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());方式, 就是出现黑屏的情况了。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容