如果我在我的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返回结果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)