目的
APP 应用中,每次退出程序再次打开,或者按
Home
键回到桌面时,都会再次展示开屏页,这使用户体验极差,特别是那种眼睁睁看着读秒的开屏页
实现
第一步:
在启动页的 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;
}
}
}
}
第二部:
在 MainAcitivity
的启动模式设置为 SingleTask
代码如下所示:
<activity
android:name=".activity.StartActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
第三部:
处理 MainAitivity
中 onKetDonw
方法中添加 moveTaskToBack(true)
,使程序进入后台而不退出
/**
* 键盘控制两次点击退出
*/
@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);
}
网友评论