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;
}
これはほんの1ページのスクレイプであり、それらの数はほとんどありません. そして、速度があまり良くないことに気付きました。そのため、マルチスレッド化を検討し、これらすべてのページを別々のスレッドで同時に解析して、高速化するように言われました。今、私はいくつかの質問があります:
- AsyncTaskLoader または AsyncTask を引き続き使用する必要がありますか、それともそのソリューションに他に (より良い) ものがありますか? このことのベストプラクティスは何かを知りたいです。
- Androidでマルチスレッドを行う方法のチュートリアル/例を教えてもらえますか?
ありがとう ;)