我正在开发需要 html 解析的应用程序。所以,我目前在 AsyncTaskLoader 中使用 jsoup,如下所示(示例):
@Override
public Boolean loadInBackground() {
try {
Connection.Response response = Jsoup.connect(getContext().getString(R.string.url_login))
.data("id", account_id, "password", account_password)
.timeout(5000)
.method(Connection.Method.POST)
.execute();
String cookie = response.cookie("JSESSIONID");
Document document = Jsoup.connect(getContext().getString(R.string.url_schedule))
.cookie("JSESSIONID", cookie)
.get();
Element table = document.select("table").first();
if (table != null) {
databaseHandler.openDatabase();
databaseHandler.getDatabase().beginTransaction();
try {
for (Element row : table.select("tr")) {
Elements columns = row.select("td");
addItem(columns, DatabaseHandler.getTableName());
}
databaseHandler.getDatabase().setTransactionSuccessful();
} finally {
databaseHandler.getDatabase().endTransaction();
}
databaseHandler.closeDatabase();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
这只是一页抓取,其中很少。而且我注意到它的速度不是很好。因此,有人告诉我,我应该考虑进行多线程处理并同时在单独的线程中解析所有这些页面,这样会更快。现在我有几个问题:
- 我应该仍然使用 AsyncTaskLoader 或 AsyncTask,还是该解决方案还有其他(更好的)方法?我想知道这件事的最佳实践是什么。
- 谁能指导我如何在 android 中进行多线程处理的教程/示例?
谢谢 ;)