gpt4 book ai didi

java - 需要解释 : how to use AsyncTask?

转载 作者:太空狗 更新时间:2023-10-29 15:42:16 24 4
gpt4 key购买 nike

我有一个包含一些数据的 XML 文件,所以我创建了一个类来表示它:

public class MyData
{
ArrayList<SpecialData> list;
int currentPage, totalPages;
}

正如您所猜到的,我有一个 SpecialData 项目列表,每个项目都包含许多字段,并且 currentPage/totalPages 是两个唯一值在 XML 文件中。我需要异步获取和解析 XML 文件,所以我创建了这个类:

class GetXMLTask extends AsyncTask<String, Void, MyData>
{
@Override
protected MyData doInBackground(String... params)
{
MyData md = null;
// Getting/parsing data
return md;
}
}

我试了一下,问题不是出自这里,因为我正确地解析了我的 XML 文件并且我的 MyData 对象是完美的。但是后来我在我的主要 Activity 类中像这样使用这个任务:

MyData md = null;
GetXMLTask task = new GetXMLTask(this);
task.execute(new String[]{url});
// How can this change my md object?

这可能非常愚蠢,但我根本不知道如何将我的 MyData 实例从我的主类链接到我通过 AsyncTask 获得的实例。我应该怎么办?谢谢。

最佳答案

覆盖AsyncTaskonPostExecute方法:

protected void onPostExecute(MyData result) {
md = result;
}

请注意,这假定您的 AsyncTask 是您 Activity 的内部类。如果不是这种情况,您可以将构造函数中对 Activity 的引用传递给 AsyncTask。在这些情况下,您应该小心地对 Activity 使用 WeakReference 以防止资源泄漏:

GetXMLTask(MyActivity activity)
{
this.mActivity = new WeakReference<MyActivity>(activity);
}

protected void onPostExecute(MyData result)
{
MyActivity activity = this.mActivity.get();
if (activity == null) // Activity was destroyed due to orientation change, etc.
return;
activity.updateUiFromXml(result);
}

关于java - 需要解释 : how to use AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15506244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com