我有一个管理蓝牙数据的后台线程。在我的第一个活动中,我有一个处理程序,当收到一些数据时,会启动第二个活动:
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语句之后尝试了这些
我的问题是这些都没有奏效。处理程序保持活动状态,并在每次条件为真时打开第二个活动。 我尝试在第二个活动上为同一个线程设置一个处理程序,但是我觉得这不是正确的解决方案。