Android:AsyncTask和Constructor

时间:2015-10-27 19:35:15

标签: android android-asynctask

我使用类异步来下载和上传两个活动中的数据。上传不起作用,我不知道为什么。

这个工作正常!

        new DatabaseConnector(true).execute("http://web2page.ch/apps/FruityNumber/highscoreShow.php");

但这不是!

        new DatabaseConnector(false).execute("http://web2page.ch/apps/FruityNumber/highscoreUpload.php?user=test7&highscore=timer7");

但如果我删除"如果"在课堂上它运作良好......有人理解为什么吗?

public DatabaseConnector(Boolean download) {
    this.download = download;
}

@Override
protected Long doInBackground(String... params) {
    try {
        try {
            //Verbinden
            url = new URL(params[0]);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.connect();

            if (download) {
                //Falls die App nochmal geladen wird, sind die Daten nur einmal enthalten. Darum leeren.
                arrayList.clear();

                inputStream = httpURLConnection.getInputStream();
                inputStreamReader = new InputStreamReader(inputStream);
                bufferedReader = new BufferedReader(inputStreamReader);

                for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
                    arrayList.add(line);
                }
            } else {

            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

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

1 个答案:

答案 0 :(得分:2)

查看代码中的评论

new DatabaseConnector(false)表示

public DatabaseConnector(Boolean download) {
    this.download = false;  // see here
}

所以

 if (download) { // this won't execute because download == false

else {
    // there is nothing here to do!
}

我不确定你对预期有何不同......

解决这个问题取决于您使用boolean变量的原因。如果没有理由,那么删除它,不要传递任何东西。

否则,听起来您想将上传代码放在else{}