我使用了vogella websiteAsyncTask
中的示例,我用它创建了一个类文件。我正在调用它来更新邮政编码,它正在工作。Activity A
TextView
我想知道如何调用它AsyncTask
来Activity B
更新另一个邮政编码TextView
。
所以AsyncTask
1、2调用不同Activities
,更新不同TextViews
。
我必须做点什么onPostExecute()
,对吧?一些示例代码,非常感谢。
提前致谢
我使用了vogella websiteAsyncTask
中的示例,我用它创建了一个类文件。我正在调用它来更新邮政编码,它正在工作。Activity A
TextView
我想知道如何调用它AsyncTask
来Activity B
更新另一个邮政编码TextView
。
所以AsyncTask
1、2调用不同Activities
,更新不同TextViews
。
我必须做点什么onPostExecute()
,对吧?一些示例代码,非常感谢。
提前致谢
您可以(我猜)在实例化 TextView 时将其传递给 AsyncTask。
所有没有打开 IDE 的情况,如果语法关闭,我们深表歉意......
public class ExampleTask extends AsyncTask<Void, Void, Void> {
private TextView targetTextView;
public ExampleTask(TextView target) {
targetTextView = target;
}
@Override
protected String doInBackground(Void... orSomething) {
//do work and get a value I guess
}
@Override
protected void onPostExecute(String result) {
targetTextView.setText(result);
}
}
然后你会这样称呼:
ExampleTask task = new ExampleTask(theTextViewToUpdate);
task.execute();
您需要注意您实例化的任务对象的范围,因为对 TextView 的引用最终可能会从您的活动中泄漏内存。
这里我不好,但你可以试试
可以为不同的活动重用 AsyncTask。为此,您必须从不同的活动中获取不同的参数。在 AsyncTask 类中启动一个带有 case 参数(在其他活动中描述)的构造函数,该参数将决定它是由 Activity A 或 B 或 C 调用的。现在使用 switch case 语句并继续前进。