0

ここで説明するように、ワーカースレッドを使用していますが、それでもコードがUIをブロックしています。run()メソッドの最初でスリープしても、UIはブロックされません。問題は、onCreateメソッドから実行される重いコードですが、何をしても、UIをブロックしないようにすることはできません。私は何が間違っているのですか?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new Thread(new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < 1000000; i++) {
                Log.d("asdf", "asdf");
            }
        }
    }).start();
}
4

2 に答える 2

0

Handlerまたはを使用し.runOnUiThread(runnable)てUIスレッドを呼び出します。次のように、Runnableなしでスレッドを実行することもできます。

new Thread(){
        @Override
        public void run() {
            for (int i = 0; i < 1000000; i++) {
                Log.d("asdf", "asdf");
            }
        }
    }).start();
于 2013-01-22T02:14:01.177 に答える
0

AsyncTask を使用していません。これは、Android が UI スレッドから長時間実行されるプロセスを実行するために使用するコントロールです。

要するに、これを使用すると、より多くの成功を収めることができます。

AsyncTask Android の例

于 2013-01-21T22:16:10.163 に答える