Cómo manejar el controlador obsoleto en Android [duplicado]

Aug 21 2020

Anteriormente, este código funcionaba perfectamente.

Ahora se muestra que android.os.handler está obsoleto.

private final Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case MESSAGE_STATE_CHANGE:
        break;
        }
    }

¿Cómo podemos resolver este problema?

Respuestas

10 AlphaOne Aug 21 2020 at 06:31

Como lo mencionó Mike en los comentarios, Handlerno está desaprobado. La forma de crear un objeto con Handler new Handler()está obsoleta.

Según la documentación, el uso new Handler()puede provocar errores. Por lo tanto, debe especificar un looper para el controlador de forma explícita. Looper no debe ser nulo.

Consulte el código:

private final Handler mHandler = new Handler(Looper.getMainLooper()) {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case MESSAGE_STATE_CHANGE:
        break;
        }
    }