java Android后台任务如何访问返回值
当后台任务返回一个值时,如何从另一个类访问它。仅将此用作示例代码,但我希望后台任务执行某些操作并返回一个值
protected String doInBackground(String... params) {
publishProgress("Sleeping..."); // Calls onProgressUpdate()
try {
// Do your long operations here and return the result
int time = Integer.parseInt(params[0]);
// Sleeping for given time period
Thread.sleep(time);
resp = "Slept for " + time + " milliseconds";
} catch (InterruptedException e) {
e.printStackTrace();
resp = e.getMessage();
} catch (Exception e) {
e.printStackTrace();
resp = e.getMessage();
}
**return resp;**
}
# 1 楼答案
异步任务:
这样称呼:
# 2 楼答案
你有点误会。后台任务不返回值。他们只是做点什么。如果你想从后台的计算中得到一个值,你可以让后台任务完成,这样当它完成时,它会通知某个对象结果值
前面的行为可以通过观察者模式完成,在该模式中,一个对象被用来观察另一个对象的事件。在这种情况下,您需要定义一个观察者(通常称为监听器),并将其传递给后台任务
您的侦听器界面可能如下所示:
然后一个实现类如下所示:
(或者你可以创建一个匿名类)
你的背景任务:
最后,在你的主线中,你要做:
# 3 楼答案
为此,您需要扩展asynktask类,如
班级看起来像
}
如果需要在另一个类中访问它,可以为此编写listner并在活动中实现
把它叫做
new AsyncTaskGetResult(this).execute(yourString);