java– 从Asynctask返回结果

java– 从Asynctask返回结果,第1张

概述如果我在我的Android应用程序中有这个后台工作文件并且从我的数据库获取数据,我怎么能将字符串’result’传递给另一个类?后台工作者连接到我的服务器,然后使用php连接到数据库.publicclassBackgroundWorkerextendsAsyncTask<String,Void,String>{Contextcontext;

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

public class BackgrounDWorker extends AsyncTask<String,VoID,String> {    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);}

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

总结

以上是内存溢出为你收集整理的java – 从Asynctask返回结果全部内容,希望文章能够帮你解决java – 从Asynctask返回结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存