Android 如何仅在重新启动应用程序时启动闪屏活动?
我有一个splash活动,应该在家庭活动开始之前出现一段时间。这是我的代码:Android 如何仅在重新启动应用程序时启动闪屏活动?,android,android-activity,splash-screen,Android,Android Activity,Splash Screen,我有一个splash活动,应该在家庭活动开始之前出现一段时间。这是我的代码: import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class SplashActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onC
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
/****** Create Thread that will sleep for 5 seconds *************/
Thread background = new Thread() {
public void run() {
try {
// Thread will sleep for 2.5 seconds
sleep(2500);
//Remove activity
finish();
// After 2.5 seconds redirect to another intent
Intent i=new Intent(getBaseContext(),HomeActivity.class);
startActivity(i);
} catch (Exception e) {
}
}
};
// start thread
background.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
目前,这一切都很好,除了当我返回主屏幕而没有明确关闭应用程序并继续运行时,它会再次显示初始屏幕。如何确保仅在重新启动应用程序时才显示启动屏幕?我建议您在SplashActivity的onCreate方法中保存包含当前时间戳的首选项。
下次打开应用程序时,请检查保存的时间戳和当前时间戳之间的差异是否大于任意值(一种宽限期),并决定显示/避免启动屏幕。我建议您将包含当前时间戳的首选项保存在SplashActivity的onCreate方法中。
下次打开应用程序时,请检查保存的时间戳和当前时间戳之间的差异是否大于任意值(一种宽限期),并决定显示/避免启动屏幕。在清单中使用noHistory和excludeFromRecent属性。此外,将标志Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP添加到用于启动实际活动的意图中
编辑:将android:launchMode=singleTop放在真正的主活动中,并将intent标志与其他标志\u activity\u NEW\u任务结合使用。在清单中使用noHistory和excludeFromRecent属性。此外,将标志Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP添加到用于启动实际活动的意图中
编辑:将android:launchMode=singleTop放在真正的主活动中,并将intent标志与其他标志\u activity\u NEW\u任务结合使用。这有点不清楚。如果活动已被销毁,用户按“上一步”或操作系统显式销毁应用程序,则应用程序将从主页重新启动。或者,如果用户按下home(主页)按钮或接到电话,应用程序将恢复。请指定“以全新方式启动应用程序”的含义。如果您的意思是每次创建新实例时,我的答案都会按照您的预期工作。我的意思是,如果当前没有应用程序实例正在运行,我希望显示启动屏幕。进入应用程序后,如果我按home按钮,然后单击应用程序图标,我不希望显示初始屏幕,因为现有的应用程序实例已经在运行。这有点不清楚。如果活动已被销毁,用户按“上一步”或操作系统显式销毁应用程序,则应用程序将从主页重新启动。或者,如果用户按下home(主页)按钮或接到电话,应用程序将恢复。请指定“以全新方式启动应用程序”的含义。如果您的意思是每次创建新实例时,我的答案都会按照您的预期工作。我的意思是,如果当前没有应用程序实例正在运行,我希望显示启动屏幕。进入应用程序后,如果我按home按钮,然后单击应用程序图标,我不希望显示初始屏幕,因为现有的应用程序实例可能已经在运行。如果我从homeactivity转到其他活动,返回home活动,转到home屏幕并单击应用程序图标,这会起作用,但如果我在homeactivity中按home按钮,然后单击应用程序图标,则不起作用。你能根据我在这里给出的描述修改你的答案吗?仍然不完全是我想要的行为:如果我从homeactivity转到其他活动,回到home activity,转到home屏幕并单击应用程序图标,这会起作用,但如果我从homeactivity按home按钮,则不起作用,然后单击应用程序图标。你能根据我在这里给出的描述修改你的答案吗?仍然不是我想要的行为: