Android 安卓:下载数据并启动活动或

Android 安卓:下载数据并启动活动或,android,download,android-activity,Android,Download,Android Activity,哪一种方法更好:下载当前活动中的数据,然后将数据发送到第二个活动,或者将url发送到第二个活动,然后在那里下载数据。 多谢各位 编辑: 我有两项活动: 第一个活动有一个列表视图,因此当您单击一行时,它将带您进入第二个活动。 我想在应用程序下载数据时显示进度对话框,因此我想在第一个活动时显示对话框,然后在下载完成后,我将开始第二个活动。实际上我想在第一个活动中下载数据,因为我还想在第二个活动开始之前下载一个广告展示给用户 一般来说,选项2更好。但这取决于你的情况。如果希望第二个活动仅在数据准备就绪

哪一种方法更好:下载当前活动中的数据,然后将数据发送到第二个活动,或者将url发送到第二个活动,然后在那里下载数据。 多谢各位

编辑: 我有两项活动: 第一个活动有一个列表视图,因此当您单击一行时,它将带您进入第二个活动。
我想在应用程序下载数据时显示进度对话框,因此我想在第一个活动时显示对话框,然后在下载完成后,我将开始第二个活动。实际上我想在第一个活动中下载数据,因为我还想在第二个活动开始之前下载一个广告展示给用户

一般来说,选项2更好。但这取决于你的情况。如果希望第二个活动仅在数据准备就绪时启动,则最好在活动1中下载。您可以使用intent发送数据。数据需要扩展parcelable(这意味着它可以被写入磁盘并被解析回来),以便它可以将其作为额外的数据添加到意图中。还可以将数据保存在静态变量中

编辑:如果您想下载活动1中的数据,您应该下载一个异步任务:

它将在另一个线程中下载数据,因此UI线程不会中断。AsyncTask提供了一种更新进度的好方法。当用户按下活动1中的列表项时,打开一个带有进度条的对话框,并启动下载数据的异步任务。当异步任务完成且数据已下载时,将其保存在静态变量中(这是最简单的方法),然后在活动2中使用它

有关异步任务的详细信息:

编辑2:基本上异步任务有4种主要方法: 在UI线程上调用的onPreExecute()。您可以使用它启动显示进度的对话框:

@Override
protected void onPreExecute() {
    super.onPreExecute();
    ShowDialog();
}
protected void onProgressUpdate(Integer... progress) {        
setDialogProgress(progress[0]);
}
doInBackground(),它在另一个线程上调用,这意味着您可以对它执行长时间的操作。在这里下载您的数据。使用publishProgress()发布进度

onProgressUpdate()是在UI线程上调用的,这意味着您可以像对话框一样与UI人员通信-因此,您应该在此处更新其进度:

@Override
protected void onPreExecute() {
    super.onPreExecute();
    ShowDialog();
}
protected void onProgressUpdate(Integer... progress) {        
setDialogProgress(progress[0]);
}
在UI线程上调用的onPostExecute()。数据已经下载。开始活动2。将数据保存在静态变量中,或将其发送到活动2。然后获取活动2中的数据并显示出来


就是这样:)

第二个选项听起来更好,但为什么呢?我认为,在第一个活动中,我可以显示同一活动中的下载进度,然后转到第二个活动,这是您喜欢#2的原因吗?事实上,我同意您的看法,因此我选择方法一,但存在一个问题:如果用户单击第一个活动中的另一个按钮,它将下载另一个数据,那么有没有办法防止这种情况发生呢。谢谢,活动一只有几个按钮,每个按钮都应该用不同的数据打开活动二?因此,在这种情况下,您只有几个选项:1。每个按钮都将在intent extras中使用不同的url启动活动2。活动2将使用该url下载并显示正确的数据。2.如果活动1中指示灯亮起,请下载所有数据。将其保存在静态变量中,或将其发送到活动2。此选项对用户来说会更快,因为活动2将很快显示数据,但它将下载未使用的数据。实际上,我认为对于另一个sol,如果单击一个按钮,可能有一种方法可以停用按钮。你能写下你正试图做的事情吗?