问题描述
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