HTMLソースをダウンロードし、それを使用するためにテキストを抽出しようとしています.HTMLはテーブルに入っていません。それを抽出し、私はそれを抽出するためにパターンと正規表現を使用して正規表現を使用しています。私はダウンロードして2回タスクを解析しています。最初のタスクは何の問題もなく素晴らしいですが、私はフレームをスキップし、メインスレッドではあまりにも多く、AsyncTaskではこれらの操作は必要ありません。スキップフレームをAsyncTaskでHTML解析を行うと、メインスレッドが遅くなります
public void getTheQuota(){
DownloadTheCoursesTask quotaTask = new DownloadTheCoursesTask();
String result = "";
try {
result = quotaTask.execute("http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php?fb=BEB").get();
Pattern p = Pattern.compile("<html><head>(.*?)</html>");
Matcher m = p.matcher(result);
while (m.find()) {
quotaResult.add(m.group(1));
}
}catch (InterruptedException e){
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
多くの人々完全に私のアプリがクラッシュ
public void getTheCourses() {
DownloadTheCoursesTask coursesTask = new DownloadTheCoursesTask();
String result = "";
try {
result = coursesTask.execute("http://www.sis.itu.edu.tr/tr/ders_programlari/LSprogramlar/prg.php").get();
coursesResult = new ArrayList<String>();
Pattern firstPattern = Pattern.compile("<option value=\"(.*?)\">");
Matcher firstMatcher = firstPattern.matcher(result);
while (firstMatcher.find()) {
coursesResult.add(firstMatcher.group(1));
}
}catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
第二構文解析タスクを動作し、言う マイAsyncDownloadタスク
public class DownloadTheCoursesTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream input = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(input);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
まず構文解析タスク言うそれはjSoupを使っていますが、私の最初の仕事は完全に実行されています。私はこれについて何ができますか、ありがとう。
私はあなたに感謝していませんでした。私はgetを取り除き、私はonPostExecuteに解析操作を追加しますか? – Alperen
あなたはdoInBackGroundで時間のかかる操作を行うべきです。パッシングもそうです。 – greenapps
お返事ありがとうございました。 – Alperen