gpt4 book ai didi

android - 从 AsyncTask 类收集值卡住了我的 UI

转载 作者:行者123 更新时间:2023-11-30 03:22:40 25 4
gpt4 key购买 nike

我正在通过 AsyncTask 内部类从我的 android Activity 发布到 Web 服务。我的想法是,每次我发布到网络服务。我希望 AsynTask 向 Activity 返回一个字符串值,通知 Activity 是发布成功还是发布到 Web 服务失败。我通过 get 方法完成了此操作,但我注意到当我单击按钮发布时,我的 UI 会在响应之前卡住一段时间。但帖子仍然有效。请问有什么方法可以防止此 UI 卡住。我的代码如下。

这是我的 AsyncTask 类中的 doBackground 方法

    @Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub

String result = "";

PatientModel patient = new PatientModel();
patient.setPhone(Phone);
patient.setEmail(Email);
patient.setGCMRegistrationID(GCMRegistrationID);

JSONHttpClient jsonHttpClient = new JSONHttpClient();
patient = (PatientModel) jsonHttpClient.PostObject(RestfulServiceUrl.RegisterPatient, patient, PatientModel.class);
GCMRegistrar.setRegisteredOnServer(context, true);

if(patient != null) {

result = patient.getPhone();
}
else if(patient == null){
result = "failed";
}

return result;
}

这是我在 Activity 中收集值的脚本

try {                       
String result = new RegisterPatient(RegisterActivity.this,resource,email,phone,regId).execute().get();
}
catch(Exception e){
}

最佳答案

在实现 AsyncTask 时,永远不要使用 get() 方法,因为它将异步调用转换为同步调用。通常结果检索是使用自定义监听器接口(interface)实现的,该接口(interface)由应接收响应的对象实现。

关于android - 从 AsyncTask 类收集值卡住了我的 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825063/

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