正常情况下,APP开发时,都需要一个启动页,作用是展示LOGO或者广告。
正常情况下如果通过Home键退出APP,实际上APP并没有退出,此时打开时仍然会展示广告,这个操作很有可能损失用户体验。
而正常情况下如果直接进入activity时跳转到下个界面,又会出现白屏的问题,如何解决呢,以下给个解决方案。
第一步:启动页处理。
在启动页的Activity中的onCreate()方法中写入如下代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 避免从桌面启动程序后,会重新实例化入口类的activity
if (!this.isTaskRoot()) { // 判断当前activity是不是所在任务栈的根
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
}
第二步:MainAcitivy处理。
将MainActivity的启动模式设置为singleTask,代码如下:
<activity
android:name=".activity.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
第三步(可选):期望在主界面返回不退出,而是进入后台。
很多APP在用户第一次点击返回键时,并不直接退出,二次点击才会退出,参考代码如下:
/**
* 键盘控制两次点击退出
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
toast("再按一次退出程序");
exitTime = System.currentTimeMillis();
} else {
// 不退出程序,进入后台
moveTaskToBack(true);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
