Android - 闪屏页(SplashActivity)的处理

转载请注明出处:https://blog.csdn.net/mythmayor/article/details/73608942

1.有很多知名程序的闪屏页都是这样的效果:

首次进入程序时展示闪屏页,程序进入后台以后再次打开程序时不展示闪屏页,程序进程被杀死后再次进入程序展示闪屏页。

2.功能实现:

要实现这个功能的话,我首先想到的是Activity的生命周期,不过很快这种想法就被pass掉了。之后我的思路是,判断应用程序是否在后台,如果在后台的话再次打开的时候就不展示闪屏页,如果不在后台的话就展示闪屏页。然后尝试了很多种方式来判断程序是否在后台运行,不过均没有什么效果。然而最后还是让我找到了一种方法,直接上代码:

SplashActivity.java的关键代码
private void startMyActivity(boolean isFromBackstage) {
        final boolean isUserLogin = PrefUtil.getBoolean(MainApplication.mContext, MyConstant.isUserLogin, false);
        if (isUserLogin) {
            if (isFromBackstage) {
                IntentUtil.startActivity(SplashActivity.this, MainActivity.class);
                finish();
            } else {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        IntentUtil.startActivity(SplashActivity.this, MainActivity.class);
                        finish();
                        overridePendingTransition(R.anim.anim_static, R.anim.anim_static);
                    }
                }, 2000);
            }
        } else {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    IntentUtil.startActivity(SplashActivity.this, LoginActivity.class);
                    finish();
                    overridePendingTransition(R.anim.anim_static, R.anim.anim_static);
                }
            }, 2000);
        }
    }

    // 用于判断是否从后台返回或者是否到后台
    public static boolean isAppWentToBg = false;
    public static boolean isWindowFocused = false;
    public static boolean isBackPressed = false;

    @Override
    public void onBackPressed() {
        isBackPressed = true;
        super.onBackPressed();
    }

    @Override
    protected void onStart() {
        startMyActivity(isAppWentToBg);
        if (isAppWentToBg) {
            isAppWentToBg = false;
            // 从后台返回
            //ToastUtil.showToast(this, "从后台返回");
        }
        super.onStart();
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (!isWindowFocused) {
            isAppWentToBg = true;
            // 进入后台
            //ToastUtil.showToast(this, "进入后台");
        }
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        isWindowFocused = hasFocus;
        if (isBackPressed && !hasFocus) {
            isBackPressed = false;
            isWindowFocused = true;
        }
        super.onWindowFocusChanged(hasFocus);
    }

3.源码下载

安卓闪屏页的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值