App启动时,按HOME键退到后台,从近期任务中无法启动应用

2019-01-09  本文已影响0人  我该怎么

问题描述

​ App的启动页一般做法都是停留几秒后自动的关闭自己,跳转的新的页面。如果在App在启动页停留时内退到后台,如果此时启动页自动关闭且跳转的新的页面时,从最近任务列表中启动App,程序会造成程序无法启动的问题。

问题分析

​ 系统的近期任务列表保存的应该是App最后一个显示的Activity信息,当最后一个显示的Activity关闭时,就会造成在近期任务列表中无法启动的问题

解决方法

简单的做法是,如果当前App在后台,且需要关闭自己时,设置一个标志位,不执行关闭的操作,返回到前台时再执行关闭操作。代码如下

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class SplashActivity extends AppCompatActivity {
    /**
     * 用来标识是否进入后台
     */
    private boolean mIsOnPause;
    /**
     * 用来标识是否需要关闭当前页面
     */
    private boolean mIsFinish;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        //如果当前是从后台回到前台,且需要关闭当前页面时,执行关闭操作
        //否则重置标准位
        if (mIsOnPause && mIsFinish) {
            mIsOnPause = false;
            finish();
            return;
        }
        mIsOnPause = false;
    }

    @Override
    protected void onPause() {
        super.onPause();
        mIsOnPause = true;
    }

    @Override
    public void finish() {
        //如果当前是不可交互状态,不关闭页面,而是将关闭标识位设置位true
        if (!mIsOnPause) {
            mIsFinish = false;
            super.finish();
        } else {
            mIsFinish = true;
        }
    }
}

源码探索

//todo

上一篇下一篇

猜你喜欢

热点阅读