我为我的Android应用程序创建了一个启动画面。我沿着路线走了一条活动,它自己在一个泼溅线上显示,然后加载“MainMenu”活动。 这没关系,直到我想退出应用程序。 当我点击“后退按钮”时,我看到MainMenu窗口。当我第二次点击“后退按钮”时......我没有看到启动画面,我再次看到MainMenu。额外的“后退”将结束该应用。
不好,有关于如何避免这种行为的任何好的提示吗? 最重要的当然是当从“MainMenu”击中“返回”时直接结束应用程序,但我想我需要重新模拟启动画面,而不是该活动的一部分?
Splashcode
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread splashThread = new Thread() {
@Override
public void run() {
try {
Log.d("Trying","Tries");
int waited = 0;
while (waited < 5000) {
sleep(100);
waited += 100;
}
} catch (InterruptedException e) {
Log.d("Catching", e.toString());
} finally {
finish();
Intent i = new Intent(UEABB.this,MainMenu.class);
UEABB.this.startActivity(i);
startActivity(i);
}
}
};
splashThread.start();
}
此致
答案 0 :(得分:2)
尝试在manifest.xml中的SplashScreen Activity上显式设置android:noHistory="true"
。在设计我的“What's New”活动时,我采用了类似的方法。
<activity android:name=".activities.WhatsNewActivity"
android:label="Version History" android:noHistory="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
但是,切换到另一项活动后,您应该致电finish()
。
答案 1 :(得分:1)
您的splashthread活动应在启动MainMenu活动后立即致电finish()
。这将把它从堆栈中删除,它不应该干扰退出应用程序。
除非你在事件处理程序中使用后退键,否则我无法想到可能导致此行为的任何其他问题。也许你可以发布splashthread的代码。