我有2项活动。第一项活动是LogoActivity
。 3秒后,我开始第二个活动,即MainActivity
。
private void startCountDown(int duration, int interval) {
CountDownTimer mCountDownTimer = new CountDownTimer(duration, interval) {
@Override
public void onTick(long millisUntilFinished) {
// nothing
}
@Override
public void onFinish() {
startActivity(MainActivity.class);
finish();
}
};
mCountDownTimer.start();
}
startActivity(Class mClass)
是我创建的方法,只是通过提供类来启动任何活动。
现在我在MainActivity
。如果我通过按主页按钮退出并返回,我会看到MainActivity
,但如果我从MainActivity
按回按钮并从后台重新打开应用,LogoActivity
将首先显示。
我不希望用户每次从LogoActivity
按回按钮(来自电话,而不是活动的按钮)时都会看到MainActivity
并从后台恢复。
如果我拨打LogoActivity
,为什么会显示finish()
?
答案 0 :(得分:2)
当您按下后退按钮时,MainActivity的实例将被销毁。
然后再次回到此任务堆栈,LogoActivity是您的默认活动,因此系统会为您创建一个实例。
您可以将MainActivity作为manifest.xml中的默认活动
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在MainActivity的onCreate方法中启动LogoActivity,以便用户首先看到LogoActivity。
3秒后,完成LogoActivity。
答案 1 :(得分:1)
如果我调用finish(),为什么会显示LogoActivity?
答案是 - 当您启动应用程序时,系统会检查应用程序的ManifestFile以获取其Intent-filter操作和类别设置为“android.intent.action.MAIN”和“android.intent.category.LAUNCHER”的活动。
此活动是您应用的启动器(第一个)活动。 (我认为,在你的情况下,它是LogoActivty)。
当您启动应用程序时,“Android系统”会在您的Activity堆栈中添加此活动。当您启动其他活动时,也会将其添加到活动堆栈的顶部。
完成活动后,它将从活动堆栈中删除。
每当您启动应用程序时,“Android系统”会跟踪活动堆栈以获得最高级别的活动。并从该应用程序启动您的应用程序。
如果发现活动堆栈为空,系统会使用您应用的launcherActivity启动您的应用。
在你的情况下你完成了两个活动。那么你的活动堆栈变空了,它会用LogoActivity启动你的应用程序。
<强>解
覆盖MainActivity中的onBackPress方法,不要调用finish。但在这种情况下,您的活动不会关闭onbackPress。
或进行MainActivity启动器活动
答案 2 :(得分:0)
因为使用Back vs Home按钮不同。请参阅Android活动生命周期:http://developer.android.com/intl/es/reference/android/app/Activity.html
答案 3 :(得分:0)
您必须使用Intent
进行新活动。像这样。
startActivity(new Intent(LogoActivity.this, MainActivity.class));
finish();
仅startActivity(MainActivity.class)
的实例
答案 4 :(得分:0)
尝试重复onBackPressed()
方法
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
答案 5 :(得分:0)
尝试控制活动的onBackPressed()方法。
答案 6 :(得分:0)
您可以使用清单中的活动属性来实现相同的目标。
&#34;机器人:finishOnTaskLaunch&#34;
有关详情,请访问http://developer.android.com/guide/topics/manifest/activity-element.html
答案 7 :(得分:0)
始终使用intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);