gpt4 book ai didi

java - AsyncTask是静态的,不同类型的参数和返回值。 Android.osNetworkthreadException

转载 作者:行者123 更新时间:2023-12-01 12:04:05 26 4
gpt4 key购买 nike

我必须做很多 AsyncTask 不允许的不同事情(或者也许我不知道该怎么做)。我有一个调用 AsyncTask 方法的类(AsyncTask 是另一个类),我需要传递一个 String 和一个 Integer,我的 AsyncTask 必须打开一个在线文件并捕获项目并返回一个 String[]。我本想解决我的问题,但它不适用于某些返回 android.os.NetworkOnMainThreadException 的 Android 操作系统,所以我不知道其他解决方法,也不知道问题是什么。我的代码:

public class Methods extends Activity{
static String url = "http://www.MYADDRESS.com/";
static String ConfPath = new String();

static public String[] Read(String path, int LinesNumber) throws InterruptedException{
try {
return new AsyncTask<Object, Integer, String[]>(){
@Override
public String[] doInBackground(Object... params) {
try {
String[] menus = new String [(int) params[1]];
BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url+params[0]).openStream()));
String line = reader.readLine();
for (int k = 0; k < (int) params[1]; k++) {
menus[k] = line;
line = reader.readLine();
}
return menus;
}
catch (IOException e){
e.printStackTrace();
}

return null;
}


}.execute(path,LinesNumber).get();
} catch (ExecutionException e) {
e.printStackTrace();
}
return null;
}

最佳答案

问题是

.execute(path,LinesNumber).get();

这使得 UI 线程等待 AsyncTask 的执行,因为 get 是一个阻塞调用。您应该只使用 .execute(path,LinesNumber);

关于java - AsyncTask是静态的,不同类型的参数和返回值。 Android.osNetworkthreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27778436/

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