为了账号安全,请及时绑定邮箱和手机立即绑定

AsyncTask 需要永远获取结果

AsyncTask 需要永远获取结果

PHP
蓝山帝景 2021-08-28 09:14:27
我正在制作一个 android 应用程序,我需要从在线数据库中获取数据。在线数据库有 3 列,Date, Time 和 Varchar(255)。这是我的 PHP 代码:<?phprequire "connection.php";if($result = mysqli_query($conn, "select * from `xuberance_updates`")) {while($row = mysqli_fetch_assoc($result)) {    echo $row["date"].",".$row["time"].",".$row["updates"].";";}}?>这是我在 android 中的 kotlin 代码:class RefreshTask(private val alertDialog: AlertDialog) :    AsyncTask<String, Void, String>() {    override fun onPreExecute() {        ...        alertDialog.show()        ...    }    override fun doInBackground(vararg params: String?): String? {        val url = URL("https://.../show_update.php")        val httpURLConnection = url.openConnection() as HttpURLConnection        httpURLConnection.doInput = true        httpURLConnection.doOutput = true        httpURLConnection.requestMethod = "POST"        httpURLConnection.connect()        val reader = BufferedReader(InputStreamReader(httpURLConnection.inputStream, "UTF-8"))        var line = reader.readLine()        val result = StringBuilder()        while (line != null) {            result.append(line)            line = reader.readLine()        }        reader.close()        httpURLConnection.disconnect()        return result.toString()    }    override fun onPostExecute(result: String?) {        alertDialog.dismiss()        ...    }    ...}当我启动 AsyncTask 时,会出现对话框。但它永远不会被解雇。该onPostExecute(结果:字符串)方法从未达到。如何解决这个问题?编辑:有时,它成功到达onPostExecute(result: String?)方法。但大多数时候,我需要等待 2 分钟或更长时间才能使用该方法。
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这应该是罪魁祸首


 while (line != null) {

            result.append(line)

            line = reader.readLine()

        }


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信