Как он определяет текущий поток?
Если вы погрузитесь в вызов new Handler()
, вы увидите исходный код, я покажу вам:
Красный прямоугольник показывает, что вам нужно Looper
, когда вы new Handler
.
Дело mLooper==null
происходит только тогда, когда вы вызываете new Handler
не в потоке пользовательского интерфейса, или вы не вызываете Looper.prepare()
в своем рабочем потоке.
Кроме того, вы можете связать обработчик с петлителем текущего потока,см. Определение обработчика в потоке пользовательского интерфейса , например handler = new Handler(Looper.getMainLooper())
.