当您从主屏幕重新启动应用程序时,如何阻止某个活动被恢复?

当您从主屏幕重新启动应用程序时,如何阻止某个活动被恢复?

问题描述:

我的Android应用程序有一个主要的活动,用户点击一个按钮,开始一个“加载活动”与微调,当完成加载后开始结果活动。当您从主屏幕重新启动应用程序时,如何阻止某个活动被恢复?

加载活动只是一个onCreate函数,它产生一个从Web获取信息的新线程。

经常在使用我的应用程序一段时间后,加载活动将是从主屏幕恢复我的应用程序时显示的活动。活动永远持续下去,微调整个时间。我唯一能做的就是按home键关闭应用程序(问题依然存在,直到关闭应用程序为止)。你如何防止这一点?我希望我的主要活动在这些情况下开始。

我尝试添加以下重写功能,但它没有工作:

@Override 
public void onResume() { 
    super.onResume(); 
    finish(); 
} 
+0

将“finish()”放在“onResume()”中会在每次启动时关闭您的应用程序。 – 2012-02-17 22:58:01

你有没有考虑过使用LoaderManagerLoaderCallbacks<>实现你异步加载?他们从Honeycomb开始,将其添加到Android中,专门用于您想要完成的任务。

http://developer.android.com/reference/android/app/LoaderManager.html

没有更多的细节,这是很难告诉你接近这一目标的最佳途径,但是这可能让你出具有完整而独立的活动只是显示一个微调,而你加载的东西的。

尝试将finish()放入您不希望重新启动的活动的onPause()中。

请勿在单独的活动中加载数据。这是threads的用途。在后台加载数据,并在返回数据时在相关Activity中填充UI。

如果您不想混淆线程,则可以使用AsyncTaskLoaders

看起来像一个糟糕的程序结构,使用这样的结束只会使情况变得更糟。看起来你的程序在特定时间挂起,所以你应该专注于修复这个问题,而不是绕开你的方式。检查你的回调是否被调用,检查你是否没有创建比你需要的更多的加载过程,检查它们是否没有干扰等。为了防止你的程序在加载之后加载,你可以简单地设置一个(静态)变量并在开始加载过程之前检查它。

我通过一个名为“determineAction()”的方法来控制我的应用程序的生命周期,该方法检查各种逻辑状态。在启动活动中,如果它有效,则继续加载,否则它将重定向到其他活动。因此,无需停止或暂停活动,只需将其重新路由到您想要的位置即可。