gpt4 book ai didi

java - Android 在运行的异步任务之间交换数据

转载 作者:行者123 更新时间:2023-12-02 07:15:05 25 4
gpt4 key购买 nike

我想要实现的是在运行的异步任务(doInBackground)之间共享数据。所以发生的事情是我有一个单独的类(扩展 Asynctask),它使用自己的 Async 类加载数据和 Activity ,我用它来更新 Activity 中的信息。基本上我想要实现的是 Activity 中的线程(监视线程)与加载器一起工作并提供来自加载器类的一些数据,当加载器准备好时,“监视”和“加载器”都应该消失。

我尝试使用接口(interface)设置一个 volatile 变量,但没有成功,我似乎无法在线程之间共享信息(异步任务)..有什么建议吗?也许需要 Exchanger 类?

最佳答案

您无法使用 onProgressUpdate 的任何原因功能?我可能对你的用例感到困惑......但一个例子可能如下:

class MyActivity extends Activity {

private AsyncTask<Uri,MyDataObject, MyResult> = new AsyncTask<Uri,MyDataObject, MyResult>() {
private MyResult mResult;

protected MyResult doInBackground(Uri... uris) {
int count = urls.length;
mResult = new MyResult()

for (int i = 0; i < count; i++) {
MyDataObject anObject = mDataLoader.getObject(uris[i]);
publishProgress(anObject);

mResult.add(anObject);
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}

protected void onProgressUpdate(MyDataObject... data) {
addDataToUI(data[0]);
}

protected void onPostExecute(MyResult result) {
Toast.makeText("All Done!", Toast.LENGTH_LONG).show();
}
}
}

关于java - Android 在运行的异步任务之间交换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035255/

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