removeCallbacksAndMessages,removeCallbacks和removeMessages之后处理程序仍然存在

时间:2015-08-28 08:11:16

标签: android multithreading android-handler

我有一个管理蓝牙数据的后台线程。在我的第一个活动中,我有一个处理程序,当收到一些数据时,会启动第二个活动:

   private Handler mHandler1 = new Handler() {
    @Override
    public void handleMessage(Message msg) {

        switch (msg.arg1) {

            // Conexión BT OK Inicia actividad de muestra de datos
            case 0:
                text.setText("Estado: Conectado");
                break;

            // Error en la conexión
            case 1:
                text.setText("Estado: Error de Conexión");
                break;

            // Recepción de Tramas
            case 2:
                byte[] mArray = new byte[128];
                mArray = (byte[]) msg.obj;

                if (mArray[0] == 0x55 && mArray[1] == (byte)0xAA)
                {
                    Intent intent = new Intent(BTSetupActivity.this, Monitor1BTActivity.class);
                    startActivity(intent);
                }
                break;

            // Recepción de Tramas fuera de rango bytes
            case 3:
                text.setText("Estado: Trama Recibida, Error Máx Data...");
                break;
        }
    }
};

在开始第二个活动的意图之后,我想停止从第一个活动中的线程接收消息,我尝试了以下每个活动:

mHandler1.removeCallbacks(null);

然后

mHandler1.removeCallbacksAndMessages(null);

和(我的值是1)。

mHandler1.removeMessages(1);

我在onStop(),onPause()和case case 2上的if语句之后尝试了这些

我的问题是这些都没有奏效。处理程序保持活动状态,并在每次条件为真时打开第二个活动。 我尝试在第二个活动上为同一个线程设置一个处理程序,但是我觉得这不是正确的解决方案。

0 个答案:

没有答案