だから私は自分が取り組んでいる小さなアプリを持っていて、それはウェブから漫画をこすり取って私の電話に表示します。ロープを学ぶためにそれを使用するだけで、特別なことは何もありません。combicReload();と呼ばれる関数。ほとんどの作業を実行し、アプリケーションで何度も呼び出されます(最初の実行時、およびユーザーが特定のボタンをクリックしたとき。関数は次のとおりです。
public void comicReload () throws IOException {
//clears some Vectors that have things in them from the last run
imagetitles.clear();
imagetext.clear();
imagelinks.clear();
//forms the link it will connect to, and connects
connector = siteBase + Integer.toString(comicNumber);
doc = Jsoup.connect(connector).get();
media = doc.select("[src]");
//gets the required media from the site
for (Element src : media) {
if (src.tagName().equals("img"));
imagetitles.add(src.attr("alt"));
imagetext.add(src.attr("title"));
imagelinks.add(src.attr("src"));
}
//some variables I could probably get rid of, but it's easy to read
Integer titlesize = imagetitles.size();
Integer textsize = imagetext.size();
Integer linkssize = imagelinks.size();
comicTitle = (imagetitles.get(titlesize-4));
hoverText = (imagetext.get(textsize-4));
comicLink = (imagelinks.get(linkssize-4));
//gets the picture I am looking for along with the associated text
URL url = new URL(comicLink);
InputStream is = (InputStream) url.getContent();
image = Drawable.createFromStream(is, "src name");
//finally puts the scraped information into the layout
comicView.setImageDrawable(image);
title.setText(comicTitle);
htext.setText(hoverText);
}
呼び出されたときは100%正常に動作しますが、3Gよりも少し遅いので、ロード中に表示するProgressDialogを追加しようとしました。これは私の試みです(これは、comicReload();を使用していた場所で実行されるコードです)。
pd = ProgressDialog.show(this, "Getting Comic", "Loading", true, false);
new Thread(new Runnable() {
public void run() {
try {
comicReload();
} catch (IOException e) {
Log.i("ComicReloadFail","Sam");
}
pd.dismiss();
return;
}
}).start();
スレッド自体は正常に実行され、comicReload()を使用してtry-catchブロックの代わりに実行するランダムコードを配置すると、その中ですべてがダンディになります。2番目にcomicReload()をそこに戻しましたが、アプリを実行すると、アプリの強制が閉じる前にProgressDialogスピナーが数秒間回転します。これを引き起こしているのは何ですか?そして、comicReload()がスレッド内にあるときに動作を停止するのはなぜですか。スピナーが機能している間にそのメソッドを実行する方法が必要です。
事前にみんなに感謝します、私はそれが読むことがたくさんあったことを知っています。