intent.getStringExtra 获取的数据是之前的数据

多次使用同一个PendingIntent发送广播时,可能会出现Intent对象被重用的情况,导致获取到的数据不正确。

要解决这个问题,可以在创建PendingIntent时,使用PendingIntent.FLAG_UPDATE_CURRENT标志来更新当前的Intent,确保每次发送广播时都是使用新的Intent对象。示例如下:

// 创建Intent对象
Intent intent = new Intent(context, MyReceiver.class);
intent.putExtra("data", "hello world");

// 创建PendingIntent对象,并同时指定FLAG_UPDATE_CURRENT和FLAG_IMMUTABLE标志
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);

// 发送广播
pendingIntent.send();

重点是:PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE

你可能感兴趣的:(java)