【问题标题】:Reopen App and not show the previous activity重新打开应用程序并且不显示以前的活动
【发布时间】:2016-01-17 15:41:00
【问题描述】:

我现在面临一个问题。当我退出应用程序并再次重新打开时,它会向我显示之前的活动。再次打开应用程序后,有什么方法可以启动 MainActivity 吗?我尝试使用但无济于事:

SecondActivity.this.finish();
Intent intent = new Intent (SecondActivity.this, MainActivity.class);
startActivity(intent);

android:noHistory="true"

请帮帮我,谢谢。

【问题讨论】:

  • 您在哪个活动中遇到此问题。用流畅的方式解释,以更好地帮助您。 noHistory 也与哪个活动有关。
  • 我正在做一个时间延长应用程序。所以基本上用户必须填写扩展活动(SecondActivity)中的字段,填写后,它将用户重定向到Mainactivity。我通过一个带有 MainActivity.this.finish(); 的对话框退出了应用程序; System.exit(0); .但是,当我重新打开应用程序(我没有杀死应用程序)时,它会显示扩展页面(SecondActivity)。正确地,当我重新打开时,它应该显示我的 MainActivity 而不是 SecondActivity。

标签: java android activity-finish


【解决方案1】:

使用这个:

Intent intent = new Intent (SecondActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();

请看这里Clear the entire history stack and start a new activity on Android

如果你想调用finish(),你应该在startActivity调用之后进行,如果你在任何生命周期回调中调用,它可以在不同的时刻被调用,而不仅仅是在导航到其他活动时.

noHistory 的好处在于,系统负责在正确的时刻完成活动(如您所见here,系统实际上会调用finish()方法),这样你就可以确保你没有在糟糕的时刻调用它,并且一切都是安全的(现在这似乎并不重要,但它可能是,例如在使用线程时)

也尝试阅读Empty process

不包含任何活动应用程序组件的进程。这 保持这种进程存活的唯一原因是缓存 目的,以提高组件下次需要启动的时间 在里面跑。系统经常会杀死这些进程以平衡 进程缓存和底层之间的整体系统资源 内核缓存。

空进程是指没有任何活动应用程序的进程 组件。保留这样一个过程的唯一原因是 缓存以提高下次启动时间的组件 应用程序需要运行。因此,系统通常会杀死这些 进程,以平衡这些之间的整体系统资源 空缓存进程和底层内核缓存。

阅读这里http://developer.android.com/guide/topics/processes/process-lifecycle.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多