8

サーバーからいくつかの画像をダウンロードするこのスレッドがあります。画像をダウンロードしたら、ハンドラーを呼び出して UI の更新を続けます。したがって、スレッドの stop() は非推奨であるため、使用できません。ここで 2 つの質問があります。

  1. 最終的にこのスレッドはどうなりますか? (ハンドラー メソッドを呼び出した後、スレッドに何が起こるかを意味します)。
  2. または、stop() を使用せずにこのスレッドを停止するにはどうすればよいですか?

これが私のコードです。

handler=new Handler()
    {
        public void handleMessage(Message msg)
        {
            if(msg.what==0)
            {
                //UI Updation takes place. 
            }
        }
    };



final Thread t = new Thread(new Runnable() {
        public void run() {
            Log.i("Inside Thread", "Downloading Images...");
                     myDownlaodMethod();
            handler.sendEmptyMessage(0);
        }
    });
    t.start();
4

2 に答える 2

8

スレッドは自動的に終了して終了します。自分で終わらせる必要はありません。Thread新しいオブジェクトを作成せずに再起動することはできません。ガベージコレクターは、解放する必要のあるすべてのメモリを処理します。オブジェクトへの参照を保持している限り、オブジェクトはメモリに残ります。参照を削除すると、ガベージコレクターは他のオブジェクトと同じようにオブジェクトを削除します。

于 2011-11-07T13:34:07.627 に答える
0

ExecutorServiceExecutorsを調べる必要があります。

通常の Java と同じであれば、一度にすべてのスレッドをシャットダウンするなど、強力なスレッド管理を提供します。

于 2011-11-07T13:42:09.823 に答える