我正在和BLE合作。我试图使用打算将rssi值从一个活动发送到另一个活动。
活动1 ,当rssi信号发生变化时,我发送的值如下所示:
@Override
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
//first logcat
Log.d("BLE_Strength_connected", String.format("BluetoothGatt ReadRssi[%d]", rssi));
Intent i = new Intent(Activity1.this, Activity2.class);
i.putExtra("key",rssi);
startActivity(i);
}
}
};
活动2: 在oncreate()方法中,我启动了一个处理程序,它每秒读取一次数据,我有以下内容:
mIntent = getIntent();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
try {
mHandler.postDelayed(this, 1000);
// if (mIntent != null) {
int value = mIntent.getIntExtra("key", 0);
Log.d("retrieve_RSSI", "value:" + value);
//The key argument here must match that used in the other activity
// }
}catch (Exception e) {
}
}
}, 1000);
我在活动1上的logcat不断打印rssi信号,但活动2上的logcat只打印零。我想知道为什么我不能在活动2中收到任何值?
答案 0 :(得分:0)
你的mIntent变量将始终引用相同的Intent对象,因此当你从中提取额外的“key”时,你当然总会获得相同的值。
您必须确保处理新的传入意图。例如,参见http://m.helloandroid.com/tutorials/communicating-between-running-activities如何做到这一点。