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



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

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

通常,在使用我的应用程序一段时间后,加载活动将是从主屏幕恢复应用程序时显示的活动。这项活动一直在进行,旋转器一直在旋转。我唯一能做的就是按home键关闭应用程序(在强制关闭应用程序之前,问题一直存在)。你如何防止这种情况发生?我希望在这种情况下开始我的主要活动。

我尝试添加以下覆盖功能,但没有成功:

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

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

不要在单独的"活动"中加载数据。这就是线程的作用。在后台加载数据,并在返回数据时填充相关"活动"中的UI。

您可以使用AsyncTask,或者如果不想干扰线程,可以使用Loaders。

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

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

如果没有更多的细节,很难告诉你最好的方法,但这可能会让你摆脱一个单独的活动,只是在加载东西时显示一个微调器。

看起来程序结构不好,这样使用finish只会让情况变得更糟。你的程序似乎在某些时候挂起了,所以你应该专注于解决这个问题,而不是四处乱闯。检查你的回调是否被调用,检查你是否没有创建比你需要的更多的加载进程,检查它们是否没有干扰,等等。为了防止你的程序在加载后加载,你可以简单地设置一个(静态)变量,并在开始加载进程之前进行检查。

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

最新更新