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

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

作者: 我该怎么 | 来源:发表于2019-01-09 09:49 被阅读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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/cnhurqtx.html