0

发生了一些奇怪的事情。我无法显示所有代码,但情况是这样的;

Runnable program = new Runnable() {
    @Override 
    public void run() {
        //This code is running
        new Handler();
        //This code not running
}};
new Thread(program).start();

日志什么也没显示。主线程运行良好。

4

2 回答 2

2

您应该始终Handler在 UI 线程中声明。您需要从某个线程中提供Handler一个Looper。例如,来自主 UI 线程:

 Handler mHandler = new Handler(Looper.getMainLooper());

Handler始终在Looper线程上下文中运行。当您创建另一个线程时,它的上下文与Looper. 正确的解决方案是Handlers总是在onCreate()onStart()中声明onResume()

于 2013-07-17T06:22:00.683 回答
1

创建一个Handler需要Looper首先对该线程进行轮询。顺便说一句,通常不需要非 UI 线程中创建 Handler。在可运行文件之外创建一个处理程序。一个更简单的替代方法是使用runOnUiThread()方法。

于 2013-07-17T06:22:52.000 回答