发生了一些奇怪的事情。我无法显示所有代码,但情况是这样的;
Runnable program = new Runnable() {
@Override
public void run() {
//This code is running
new Handler();
//This code not running
}};
new Thread(program).start();
日志什么也没显示。主线程运行良好。
发生了一些奇怪的事情。我无法显示所有代码,但情况是这样的;
Runnable program = new Runnable() {
@Override
public void run() {
//This code is running
new Handler();
//This code not running
}};
new Thread(program).start();
日志什么也没显示。主线程运行良好。
您应该始终Handler
在 UI 线程中声明。您需要从某个线程中提供Handler
一个Looper
。例如,来自主 UI 线程:
Handler mHandler = new Handler(Looper.getMainLooper());
Handler
始终在Looper
线程上下文中运行。当您创建另一个线程时,它的上下文与Looper
. 正确的解决方案是Handlers
总是在onCreate()
和onStart()
中声明onResume()
。
创建一个Handler
需要Looper
首先对该线程进行轮询。顺便说一句,通常不需要在非 UI 线程中创建 Handler。在可运行文件之外创建一个处理程序。一个更简单的替代方法是使用runOnUiThread()
方法。