gpt4 book ai didi

android - AsyncTask 完成后如何在另一个类中继续该过程

转载 作者:行者123 更新时间:2023-11-29 21:14:47 25 4
gpt4 key购买 nike

我正在做一个项目,我有一个关于 AsyncTask 的问题。我想要做的是将 AsyncTask 与我的类分开,方法是编写一次并从任何类中调用它。所以我创建了一个名为 A 的类,它是一个 fragment Activity 并包含一个 ListView 。在这个类中,我正在创建一个 AsyncTask 对象以从 xml 中获取数据并使用该数据创建一个列表。当 AsyncTask 完成后,我想将此列表发送回 A 类并通过在 ListView 中添加列表并更新布局来继续该过程。我必须在 onPostExecute 中做什么才能传递 A 类中的数据,以及如何让类了解 AsyncTask 的进程以便它可以继续?谢谢

这是我创建 AsyncTask 对象的简单代码。

GetXMLData load = new GetXMLData();
if (this.count == 1)
{
load.Set_URL(XML_URL);
this.count++;
}
else
{
load.Set_URL(XML_URL, "?paged=" + this.count);
this.count++;
}
LinkedList<Contents> content_list;
load.start_LoadContents();
this.list = new ArrayList<Contents>();
content_list = load.get_XML_List();
Log.i("content_list", "The content_list is " + content_list.size());

最佳答案

你可以试试这个

public class MainActivity extends Activity implements TaskListener {

TaskListener listener;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listener = this;
new BackgroundTask(listener).execute("");

}

@Override
public void taskComplete(ArrayList<String> list) {
if (list.size() != 0) {
Log.i("Log", "list " + list.get(0));
}
}

}

任务监听器.java

public interface TaskListener {
public void taskComplete(ArrayList<String> list);
}

背景任务.java

public class BackgroundTask extends AsyncTask<String, String, String> {

TaskListener listner;
ArrayList<String> list = new ArrayList<String>();

public BackgroundTask(TaskListener l) {
this.listner = l;
}

@Override
protected String doInBackground(String... params) {
// do your background task like below
list.add("Android");
return null;
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);

listner.taskComplete(list);

}

}

关于android - AsyncTask 完成后如何在另一个类中继续该过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21727623/

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