调用类函数后,Java代码将不会执行

时间:2017-08-01 16:59:45

标签: java android

我创建了一个程序,它将通过PHP连接到数据库并回显响应。然后我的android程序向PHP文件发出请求并读取回显。

    public class Read_Author extends AsyncTask<String, Void, String> {

    String authorName = "";


    @Override
    public String doInBackground(String... params) {

    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://localhost/scripts/read_information.php");
        HttpResponse response = httpclient.execute(httppost);
        authorName = String.valueOf(EntityUtils.toString(response.getEntity()));

        String myStr = "ANSWER";
        Log.v(myStr, authorName);
    }
    catch(Exception e){

    }

    return authorName;

}

public String returnAuthor(){

    return authorName;
}

}

我成功检索了echo字符串并将其放在作者姓名字符串变量中。但是当我尝试从我的主要活动中调用return author时,我没有得到任何错误,但是代码没有运行。

我在我的主要活动中调用了一个名为“readValue”的函数,在该函数中,execute函数被读取,然后应该发生的是returnauthor函数应该运行。但相反,没有任何反应 主要活动代码:

    public void returnAuthor(){
    loadAuthor.execute();

    String a = loadAuthor.returnAuthor();
    Log.v("HIT ME", a);
    }

如果有人对于为什么会发生这种情况有任何建议以及如何解决这一问题将非常感激!

1 个答案:

答案 0 :(得分:1)

您似乎对options有误解。 AsyncTask的结果可能无法立即生效,因为后台任务可能尚未完成。

您需要覆盖AsyncTask中的方法onPostExecute,以便在后台任务完成后执行某项任务。

首先在执行AsyncTask

之前显示progressDialog
AsyncTask

然后在final ProgressDialog progressDialog = new ProgressDialog(this); progressDialog.setMessage("Loading.."); progressDialog.setCancelable(false); progressDialog.show();

onPostExecute: