我在访问线程中创建的处理程序时有时会出现空指针异常。
我正在使用两种方法。
一种是带线程的服务,我在其中创建处理程序并通过服务方法访问它。其次是在活动中创建的线程,我在其中创建线程,启动它,并创建处理程序。
问题很简单,处理程序是与主线程异步创建的。我在主(gui线程)中访问它,所以有时它会创建,有时它会在获取它时为空。
我可以在 gui 线程上进行 while(handler == null){ } 但这确实是一个糟糕的解决方案。我正在寻找一些优雅的方式来做到这一点。
一切都在主线程中。
Thread t = new Thread(new Runnable {
Looper.prepare();
handler = new Handler();
Looper.Loop();
}
handler.post(new Runnable{}) //at this point sometimes handler is still null.
and it is created like few ms later. But still at this point i need valid handler
to background thread