java asynctask完成_java – 从Asynctask返回结果

如果我在我的Android应用程序中有这个后台工作文件并且从我的数据库获取数据,我怎么能将字符串’result’传递给另一个类?

后台工作者连接到我的服务器,然后使用php连接到数据库.

public class BackgroundWorker extends AsyncTask {

Context context;

AlertDialog alertDialog;

BackgroundWorker (Context ctx) {

context = ctx;

}

@Override

public String doInBackground(String... params) {

String type = params[0];

String specials_url = "";

if(type.equals("venue click")) {

try {

//String user_name = params[1];

URL url = new URL(specials_url);

HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();

httpURLConnection.setRequestMethod("POST");

httpURLConnection.setDoOutput(true);

httpURLConnection.setDoInput(true);

OutputStream outputStream = httpURLConnection.getOutputStream();

BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));

// String post_data = URLEncoder.encode("user_name","UTF-8")+"="+URLEncoder.encode(user_name,"UTF-8");

// bufferedWriter.write(post_data);

bufferedWriter.flush();

bufferedWriter.close();

outputStream.close();

InputStream inputStream = httpURLConnection.getInputStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));

String result="";

String line="";

while((line = bufferedReader.readLine())!= null) {

result += line;

}

bufferedReader.close();

inputStream.close();

httpURLConnection.disconnect();

return result;

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

return null;

}

@Override

protected void onPreExecute() {

alertDialog = new AlertDialog.Builder(context).create();

alertDialog.setTitle("Info");

}

@Override

protected void onPostExecute(String result) {

alertDialog.setMessage(result);

alertDialog.show();

// String temp = "login success";

// if (result.equals(temp)) {

// Intent intent = new Intent(context, Register.class);

// context.startActivity(intent);

// }

}

@Override

protected void onProgressUpdate(Void... values) {

super.onProgressUpdate(values);

}

}

最佳答案

从后台线程获取回调的最佳方法是使用接口作为AsyncTask的回调,例如:

创建一个可以在onPostExecute()中调用的接口

public interface ResponseCallback {

void onRespond(String result);

}

在调用asynckTask之前定义它如下:

ResponseCallback cpk = new ResponseCallback() {

@Override

public void onRespond(String result) {

//code to be done after calling it from onPostExecute

}

};

并将cpk传递给asynckTask的构造函数,并在onPostExecute中调用它,如下所示:

if(cpk!=null){

cpk.onRespond(result);

}

当然,您可以将界面的签名修改为您想要的任何内容.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值