如何仅在活动启动时才显示启动画面而不是在恢复活动时?

时间:2011-04-22 16:25:41

标签: java android

我希望启动画面仅在应用程序被完全销毁时显示,而不是在后台运行并恢复时显示

5 个答案:

答案 0 :(得分:3)

Android的Live-Circle

创建您的Acrivity时:

  1. 的onCreate
  2. 在onStart
  3. 的onResume
  4. 当您的活动变为非活动状态时:

    1. 的onPause
    2. 的onStop
    3. 再次变为活动时:

      1. onRestart
      2. 在onStart
      3. 的onResume
      4. 当它被摧毁时:

        1. 的onPause
        2. 的onStop
        3. 的onDestroy
        4. 编辑:我要做的是,我会为您的Main-Activity定义一个全局布尔值,例如'showSpash',并将其初始化为“true”。然后,当您首次调用'onCreate'方法时,将其设置为“false”。 然后,无论何时调用'onCreate'方法,都要检查布尔值是否为“false”。如果是,请不要显示启动,如果没有显示它。

答案 1 :(得分:2)

我在我的应用程序类中创建了全局变量:

public class MyApplicationClass extends Application {
    public static boolean welcomeScreenIsShown = false;
}

然后在我splash activity我做了类似的事情:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);

    //Put this before anything else in OnCreate
    if (MyApplicationClass.welcomeScreenIsShown) {
        // Open your Main Activity
    }
}

然后,在我的主要活动中,我做了:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MyApplicationClass.welcomeScreenIsShown = true;
}

祝你好运!

答案 2 :(得分:1)

一种非常简单的方法:

主要活动只是一个闪屏。计时器启动时显示此活动,持续4秒钟。

当点击4秒时,会破坏启动画面活动并启动主应用程序活动。

Voila,你现在有一个永远不会显示的闪屏,除非你第一次启动应用程序。

public class SplashScreen extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        Thread t = new Thread() {
            public void run() {
                try {
                    int time = 0;
                    while (time < 4000) {
                       sleep(100);
                       time += 100;
                    }
                }
                catch (InterruptedException e) {
                    // do nothing
                }
                finally {
                    finish();
                    Intent i = new Intent(SplashScreen.this, MainApplication.class);
                    startActivity(i);
                }
            }
        };
        t.start();

    }
}

答案 3 :(得分:0)

更好的方法是在android:noHistory="true"中为SplashScreenActivity设置AndroidManifest属性。

答案 4 :(得分:-1)

这不是“onResume()”与“onCreate()”的目的吗?