在我的应用主要活动中,我在onStart()
下载了一些用户数据。当我打开设置并点击Back
按钮时,我完成Settings Activity
并返回主活动。问题是数据正在重新下载。
那么,如何避免重新下载数据呢?
我虽然关于startActivityForResult
,但我不知道如何使用它,我不明白它是如何工作的。
提前谢谢!
答案 0 :(得分:2)
这是Android的常见行为。当您启动“设置活动”时,您的“主要活动:调用onStop并且活动已停止。现在当您从”设置活动“中单击后退按钮时,”主要活动“将出现在最前面,并再次调用onStart方法。由于您说您正在使用onStart方法下载数据,因此数据将再次下载。
您可以通过在onCreate方法中下载数据来避免这种情况。
答案 1 :(得分:2)
在主活动类中定义一个静态变量,如下所示:
public static bool download = true;
从设置返回时,将其值更改为false,如:
MainActivity.download = false;
并将下载方法放在if语句中:
if (download) {
yourdownloadcode();
}
答案 2 :(得分:1)
当您在“设置”活动上按Back
按钮后,当您的主要活动可见时,会再次调用onStart
方法(请参阅Activity Lifecycle)。这就是为什么你再次开始重新下载数据的原因。所以,保留一些标志,表明你已经开始下载任务了。但请记住,在调用onPause
方法后,您的主要活动可能会被杀死。
答案 3 :(得分:1)
如果您只想加载数据,可以使用活动onCreate
。以下是活动生命周期信息:http://developer.android.com/reference/android/app/Activity.html
startActivityForResult
您可以像设置屏幕上的回调一样使用 - 如果您需要在“设置”屏幕上更改配置后更改“主要活动”布局。您可以在http://saigeethamn.blogspot.com/2009/08/android-developer-tutorial-for_31.html
找到示例