阻止主线程

use*_*055 1 java multithreading android blocking ui-thread

我不明白为什么我的主UI线程被阻止.我有调用函数doSomething()的按钮.

    randomButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    doSomething();    
                }
    });
}

    // My private helper funtion

    private void doSomething() {

                Thread t1 = new Thread() {

                    @Override
                    public void run() {

                        long startTime = SystemClock.uptimeMillis();
                        Log.e(TAG, "Start Time = "+startTime);
                        while((SystemClock.uptimeMillis()-startTime)<6000){// Loop for 6 seconds
                            Log.e(TAG, "Diff ="+(SystemClock.uptimeMillis()-startTime));                        
                        }    
                    }    
                };
                t1.run();
        }
Run Code Online (Sandbox Code Playgroud)

问题是当我按下按钮时,它仍然按下循环运行的时间(这里是6秒).我希望它以这样一种方式,即使循环继续运行,用户仍然可以使用他的UI元素.这就是我创建一个新线程的原因.难道我做错了什么 ?

谢谢

Gab*_*han 5

你不要调用run来启动一个线程.你调用start().直接调用run会在当前线程上运行