我希望启动画面仅在应用程序被完全销毁时显示,而不是在后台运行并恢复时显示
答案 0 :(得分:3)
创建您的Acrivity时:
当您的活动变为非活动状态时:
再次变为活动时:
当它被摧毁时:
编辑:我要做的是,我会为您的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()”的目的吗?