我们在用一些常用app时,它们的实现都是:回到桌面后,再次进入应用时,显示的是上次显示的界面,除非你第一次进入或者杀掉后台。
而我们的应用一般来说,若是有启动页的话,重新进入的时候都会走一遍启动页,这不够友好。
解决办法:
1、找到启动页,也就是AndroidManifest.xml中设置了启动的Activity,即类似下面:
<activity android:name=".activity.SplashActivity">我这边就是SplashActivity,打开它,在setContentView方法前添加一段代码:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!isTaskRoot()) { finish(); return; } setContentView(R.layout.activity_splash); }即if(...){...},这一段是为了解决从桌面点击图标进入应用时,先检查当前栈中是否有activity,即后台是否还有界面存在,若有的话,就不开启启动页。
2、找到主Activity,即一般的MainActivity,在类中添加:
@Override即检查到用户点按返回键要退出到桌面时,不让activity被finish掉,而是调用moveTaskToBack(true)将activity移到后台,方便下次开启应用时,直接进入此界面。
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);
}