gpt4 book ai didi

Android 帮助 AsyncTask

转载 作者:行者123 更新时间:2023-11-30 04:40:56 25 4
gpt4 key购买 nike

我的应用程序在所有版本的 Android 中都运行良好,除了它失败是因为我在主线程上进行网络调用。我的下面代码在 url.openStream() 上失败,我想我需要在单独的线程上进行此调用。此外,我还创建了 Utilities 类,这样我就可以引用我在应用程序的许多部分中使用的函数。我确定我做错了,但这就是我当时所知道的。我希望有人愿意花时间向我展示我应该如何做到这一点以及如何将 openStream 调用包装在 AsyncTask 中。在此先感谢您的帮助。此外,过去几天我一直在尝试自己解决这个问题。

class Utilities {
static XMLReader xr;
static URL url;
private final static int CHUNK_SIZE = 32 * 1024;
static byte[] _fileIOBuffer = new byte[CHUNK_SIZE];

static String DBGetOnlineVersionNumber(final Activity activity){

final String version = null;

try {

/* Create a URL we want to load some xml-data from. */
String location = activity.getString(R.string.version_file_location);
url = new URL(location);

/* Get a SAXParser from the SAXPArserFactory. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();

/* Get the XMLReader of the SAXParser we created. */
xr = sp.getXMLReader();
/* Create a new ContentHandler and apply it to the XML-Reader*/
final XMLVersionReader myExampleHandler = new XMLVersionReader();
xr.setContentHandler(myExampleHandler);

xr.parse(new InputSource(url.openStream())); //Fails here
/* Parsing has finished. */
} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}
return version;
}

最佳答案

现在您已经很好地将代码放在一个单独的静态方法中,我猜使用它更合适。让您有可能同步调用它,或者可以从单独的线程调用相同的代码。如果将调用添加到您的 Activity 中,则可以围绕此将调用包装到 AsyncTask 中。

new AsyncTask<Activity, Void, String>() {
@Override
public String doInBackground(Activity... activities) {
return Utilities.DBGetOnlineVersionNumber(activities[0]);
}
@Override
public void onPostExecute(String result) {
Log.d("VERSION_NUMBER", result);
}
}.execute(this);

关于Android 帮助 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005608/

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