点击“返回”按钮时杀死启动屏幕

时间:2013-02-12 21:12:09

标签: android splash-screen activity-lifecycle

我为我的Android应用程序创建了一个启动画面。我的问题很简单。 5秒后,启动画面消失,主要活动正常。然后,如果我点击“返回”按钮,它会再次返回闪屏。但我不想要这个。

如果用户触摸mainactivity上的“后退”按钮,应用程序必须在没有启动画面的情况下进入android菜单。我该如何解决?

package com.example.androidfirst;

import android.app.Activity;

public class SplashActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash_screen);

    Thread timer = new Thread() {   //new Thread
        @Override
        public void run() {

            try {
                sleep(5000);
            }
            catch (InterruptedException e) {

                e.printStackTrace();
            }
            finally {
                Intent MainAct = new Intent("com.example.androidfirst.MAINACTIVITY");
                startActivity(MainAct);

                try {
                    this.finalize();
                }
                catch (Throwable e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }

    };

    timer.start();

}

}

5 个答案:

答案 0 :(得分:5)

您可以在 AndroidManifest.xml 中使用android:noHistory="true"标签中的<activity>实施启动画面。

答案 1 :(得分:3)

  

如果用户触摸mainactivity上的“后退”按钮,应用程序必须在没有启动画面的情况下进入android菜单。我该如何解决?

您可能会发现使用HandlerRunnable更容易创建延迟,但只需在finish()后调用startActivity()

答案 2 :(得分:3)

首先,不要使用启动画面。

然而,您必须致电finish()并使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK开始新活动。

答案 3 :(得分:0)

您需要添加onStop()以指定在不再显示初始屏幕时要执行的操作。

从那里拨打finish()

答案 4 :(得分:0)

我强烈建议您不要使用启动画面,只是为了拥有启动画面。

如果您在准备向用户显示UI(即从某些来源加载数据)之前需要执行一些长时间运行的任务,那么在加载该数据时显示启动是合适的。否则你只是在浪费你的用户时间。

5秒似乎不是很长时间,但是当你的用户坐在那里盯着无用的闪屏时,这对他们来说似乎是永恒的。

如果您觉得必须使用闪屏,请阅读并吸收此页面上的知识:SplashScreens Done Right

阅读完之后,请按照他使用的示例进行操作,以便尽可能少地骚扰您的用户。