安卓开发——每次进入应用都会创建启动页的问题

时间:2022-04-04 16:44:57

我们在用一些常用app时,它们的实现都是:回到桌面后,再次进入应用时,显示的是上次显示的界面,除非你第一次进入或者杀掉后台。

而我们的应用一般来说,若是有启动页的话,重新进入的时候都会走一遍启动页,这不够友好。

解决办法:

1、找到启动页,也就是AndroidManifest.xml中设置了启动的Activity,即类似下面:

<activity android:name=".activity.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我这边就是SplashActivity,打开它,在setContentView方法前添加一段代码:
@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (!isTaskRoot()) {            finish();            return;        }        setContentView(R.layout.activity_splash);    }
即if(...){...},这一段是为了解决从桌面点击图标进入应用时,先检查当前栈中是否有activity,即后台是否还有界面存在,若有的话,就不开启启动页。

2、找到主Activity,即一般的MainActivity,在类中添加:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
即检查到用户点按返回键要退出到桌面时,不让activity被finish掉,而是调用moveTaskToBack(true)将activity移到后台,方便下次开启应用时,直接进入此界面。