我使用了vogella website中的AsyncTask
示例,我用它创建了一个类文件。
我是从Activity A
调用它来更新邮政编码的TextView
,它正在运作。
我想知道如何从AsyncTask
拨打相同的Activity B
来更新其他邮政编码TextView
。
一个AsyncTask
,来自不同Activities
的2个来电更新不同的TextViews
。
我要做点什么onPostExecute()
,对吗?
一些示例代码非常感谢。
提前致谢
答案 0 :(得分:3)
您可以(我猜)在实例化时将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的引用最终可能会从您的活动中泄漏内存。
答案 1 :(得分:0)
我不是很好,但您可以尝试
可以为不同的活动重用AsyncTask。 为此,您必须从不同的活动中获取不同的参数。 在AsyncTask类中,使用case参数(在其他活动中描述)启动一个构造函数,该参数将决定,它由Activity A或B或C调用。 现在使用switch case语句并继续前进。