gpt4 book ai didi

java - 异步任务不起作用

转载 作者:行者123 更新时间:2023-12-01 13:35:01 24 4
gpt4 key购买 nike

嘿,我的 Android 应用程序有问题。我正在尝试从给定的 url 下载文本到可编辑框,但是当我运行应用程序并点击按钮时,它突然停止工作。我也使用 asynctask 来下载eclipse 告诉我类 DownloadTask 没有在本地使用

public void sendMessage(View view) throws IOException {
new DownloadTask().execute();
}

private class DownloadTask extends AsyncTask{
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
try {
EditText tf = (EditText) findViewById(R.id.editText1);
String kupa = tf.getText().toString();
Document doc;
doc = Jsoup.connect(kupa).get();
String title = doc.text();
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(title);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(result);
}





}

我还在 onCreate 方法中添加了两行代码

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

如果这有帮助,最小 api 是 10,目标是 16干杯,伙计们

最佳答案

您无法在 doInBackground 中运行 UI 代码。

您尝试在 doInBackground 上运行以下代码,删除该代码或将其移至 onPostExecute

tv.setText(title); 

并且您不需要以下行:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

如果您需要AyncTask中的值,您可以传递数据,如果您需要tf.getText().toString()您可以使用以下代码更改您的代码:

new DownloadTask().execute(tf.getText().toString()); 

并更改 AsyncTask 类:

public static class DownloadTask extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... params)
// use params array, in this example you can get tf.getText().toString() with params[0]
String kupa = params[0] // if you pass more data you can increase index
}

有关更多信息,请参阅 documentation of AsyncTask

关于java - 异步任务不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com