APP 退出再打开,不重复启动开屏页

2018-12-07  本文已影响0人  Eren丶耶格尔

目的

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" />
第三部:

处理 MainAitivityonKetDonw 方法中添加 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);
    }
上一篇 下一篇

猜你喜欢

热点阅读