私はアンドロイドで新しく、私が作成したスレッドについて質問します。私はそれが愚かな質問だと思うが、私は申し訳ありません。私はonClickボタンリスナーを持っています。その仕事は、URLダウンロードリンクを取得し、変数に格納することです。実行中のスレッドが遅れています
/**
* this method invoke from setPositiveButton's dialog
*
* @param rootView
*/
private void addURLToList(View rootView) {
editTextAddURL = (EditText) rootView.findViewById(R.id.editText_add_url);
Log.i("===", "addURLToList: " + editTextAddURL.getText());
stringUrl = editTextAddURL.getText().toString();
*start GetSizeOfFile thread for getting size file and store
* in lenghtOfFile variable
*/
new GetSizeOfFile().start();
Log.i("====", "size of file after Thread: " + lenghtOfFile);
}
ファイルサイズを取得したいのでスレッドを作成します。 Log.i("====", "size of file after Thread: " + lenghtOfFile);
これは私のlogcatある
private class GetSizeOfFile extends Thread {
@Override
public void run() {
super.run();
try {
URL url = new URL(stringUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
lenghtOfFile = connection.getContentLength();
Log.i("====", "size of file in Thread: " + lenghtOfFile);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
すべてがOKですが、スレッドが開始されると、数秒後に私のlenghtOfFile変数が初期化され、私はこのラインでlenghtOfFile
に0を得た:
02-22 10:02:11.352 11333-11333/com.example.manifest.simplefiledownloadmanager I/===: addURLToList: http://dl2.soft98.ir/soft/a/Adobe.Shockwave.Player.12.2.7.197.IE.rar
02-22 10:02:11.352 11333-11333/com.example.manifest.simplefiledownloadmanager I/====: file name : Adobe.Shockwave.Player.12.2.7.197.IE.rar
02-22 10:02:11.352 11333-11333/com.example.manifest.simplefiledownloadmanager I/====: size of file after Thread: 0
02-22 10:02:36.544 11333-11495/com.example.manifest.simplefiledownloadmanager I/====: size of file in Thread: 13524394
私がしたいですスレッドからのファイルのサイズを取得することは、私はスレッドまたは終了標準的な方法をスリープ状態に持っていることが正しいことをfirst.is?あなたはその実行順序を負いかねますのスレッドで作業するとき、私はアンドロイド
コールバックを作成し、「スレッドの終わり」からのコールバックを呼び出して、calbackでスレッドからの結果を必要とするスタッフを行う...スレッドを待っている: あなたのコードは多少このようにする必要があります結果は 'addURLToList'の内部ではスレッドが役に立たなくなってしまいます(NetworkOnMainThreadExcpetionを知っています...しかし、それはメインスレッドをブロックしないためです) – Selvin
なぜいくつかの人々がマイナスを投稿する理由はわかりません?アンドロイドの新機能あなたが私に答えることを望まないなら、答えないでください、なぜマイナスを与えるのですか! –
@セルビンありがとうございます。あなたについてのチュートリアルのリンクを送ることができますか? –