gpt4 book ai didi

java - 子线程返回值

转载 作者:行者123 更新时间:2023-12-02 08:18:35 24 4
gpt4 key购买 nike

我正在编写一个与网站通信的 Android 应用程序。每当我访问该网站时,我都会显示一个 ProcessDialog,以便用户知道发生了什么事。我的大部分网站通信都是单向的,因此我通常不期望任何返回数据。

但是,有一点我需要取回信息,但当我退出子线程时,结果不会被存储。简而言之,我需要调用一个线程,让它处理结果,并将结果存储在几个字段中。

这是我到目前为止所得到的 - 我有两个变量,String[] Accountboolean AccountRetrievalSuccess:

public void GetAccount() {
MyDialog = ProgressDialog.show( MyContext, "Retrieving Account" , "We're retrieving your account information. Please wait...", true);
Thread T = new GetAccountThread();
T.start();
}

public class GetAccountThread extends Thread {
@Override
public void run() {
try {
String resp = GetPage(BaseURL+MainPage+"?P="+PhoneID+"&K="+WebAccessKey+"&A=ACCOUNT");
if (resp.contains("FAILURE|")){
failhandler.sendEmptyMessage(0);
} else {
resp = resp.replace("SUCCESS|", "");
Account = resp.split("\\|");
handler.sendEmptyMessage(0);
}
} catch (Exception e) {
failhandler.sendEmptyMessage(0);
}
};

private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
AccountRetrievalSuccess = true;
MyDialog.dismiss();
}
};

private Handler failhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
AccountRetrievalSuccess = false;
MyDialog.dismiss();
ShowWtf();
}
};
}

知道我需要做什么才能存储 Account 和 AccountRetrievalSuccess 值,以便我可以从代码中的其他位置访问它们吗?

最佳答案

看起来对于 AsyncTask 来说是一份完美的工作!

此类允许您在后台线程上运行任务并将结果返回给 UI 线程,同时报告当前任务的进度。

顺便说一句,不期待移动应用程序中的结果可能是一个坏主意,由于移动网络连接的性质,您永远无法确定您的服务器是否真的收到了您发送的内容(并且服务器可能有处理时失败,您的应用程序永远不会知道...)

关于java - 子线程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887408/

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