gpt4 book ai didi

java - 异步任务步骤

转载 作者:行者123 更新时间:2023-12-02 07:44:24 27 4
gpt4 key购买 nike

public class HttpPostTask extends AsyncTask<Void, Integer, Void> {

TextView txtStatus = (TextView)findViewById(R.id.txtStatus);

@Override
protected Void doInBackground(Void... params) {

EditText editText1 = (EditText)findViewById(R.id.editText1);

try {

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://83.254.xx.xx/android/service.php");

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("action", "savedata"));
nameValuePairs.add(new BasicNameValuePair("data", editText1.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);

} catch (Exception e) {
e.printStackTrace();
}
return null;
}

protected void onPreExecute(){

Log.i("debug", "onPreExecute");
}

protected void onProgressUpdate(Integer... progress) {

Log.i("debug", "onProgressUpdate, " + progress[0]);
}

protected void onPostExecute() {

Log.i("debug", "onPostExecute");
}
}

我在日志中看到的只是onPreExecutedoInBackground 中的代码工作正常,没有任何异常。我想用当前状态更新 TextView ,但为什么没有调用所有步骤?

谢谢

最佳答案

两个问题:

  1. onPostExcute 接受的参数与 doInBackground 的返回值类型相同,因此您拥有的版本不是相同的方法签名(您没有实际上重写了该方法)并且不会被调用。它应该是onPostExecute(Void result)
  2. 仅当您从后台方法调用 publishProgress 时,
  3. onProgressUpdate 才会被调用。如果您不调用发布,则不会触发任何更新。

需要注意的是,如果您养成使用 @Override 属性的习惯,像 #1 这样的问题将会被编译器捕获。

HTH

关于java - 异步任务步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091118/

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