正常情况下,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); }