阻止主线程

时间:2014-12-14 01:36:56

标签: java android multithreading 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();
        }

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

由于

1 个答案:

答案 0 :(得分:5)

你没有调用run来启动一个线程。你调用start()。调用run run直接调用当前线程运行