问题:
如果传递一个数据类对象,会导致之前数据传不过来
如下面代码示例:
@Parcelize
data class AlarmItemInfo(val type: Int, var icon: Int, val title: String, val desc: String, var openSwitch: Boolean, var date: String) : Parcelable
class NotiReceiver : BroadcastReceiver() {
companion object {
private const val NO_TYpe = "no_type"
private const val sourData = "sourData"
//用于构造pendingintent的intent对象
fun getIntent(data: NotiTimeSetActivity.AlarmItemInfo): Intent {
val type = data.type
return Intent(application, NotiReceiver::class.java).apply {
putExtra(NO_TYpe, type)
//这里如果传对象是不行的!!
//putExtra(sourData, data)
putExtra(sourData, GsonUtils.toJson(data))
}
}
}
override fun onReceive(context: Context, intent: Intent) {
//由于我上述构造的pendingintent会启动当前广播接收器,所以是在这里接收数据
//这里是无法正确获取传递过来的数据!!(如果上面是传递对象的话,这个no_type也会被影响)
val type = intent.getIntExtra(NotiReceiver.NO_TYpe, 1)
}
}
这里我构造的pendingintent使用的flags和requestId无问题,但是会导致数据传递不过来
最终解决方案还是将数据为string来进行传输
评论区