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

时间:2012-02-17 21:46:26

标签: android

我的Android应用程序有一个主要活动,用户点击一个按钮,它会启动一个带有微调器的“加载活动”,它会在加载完成后启动结果活动。

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

通常,在使用我的应用程序一段时间后,加载活动将是从主屏幕恢复我的应用程序时显示的活动。活动永远运行,旋转器旋转一整天。我唯一能做的就是按主页键关闭应用程序(问题仍然存在,直到强行关闭应用程序)。你怎么防止这种情况?我希望我的主要活动能够在这些情况下开始。

我尝试添加以下覆盖功能,但它不起作用:

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

您可以使用AsyncTaskLoaders,如果您不想使用线程。

答案 2 :(得分:0)

您是否考虑过使用LoaderManagerLoaderCallbacks<>来实现异步加载?他们在Honeycomb中首先将这个添加到Android中,专门针对您正在尝试完成的事情。

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

如果没有更多具体细节,很难告诉你解决这个问题的最佳方法,但这可能会让你完成一个完整的单独活动,只是为了在你加载东西时展示一个微调器。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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