gpt4 book ai didi

android - 如何在手机上本地保存待处理的 Intent

转载 作者:行者123 更新时间:2023-12-04 16:47:34 25 4
gpt4 key购买 nike

我需要存储从 StatusBarNotification 对象获得的 PendingIntent 对象。 PendingIntent pendingIntent=sbn.getNotification().contentIntent;

最佳答案

读自:

PendingIntent pi = PendingIntent.readPendingIntentOrNullFromParcel(parcel);

写给:
PendingIntent.writePendingIntentOrNullToParcel(PendingIntent,parcel);

编辑 1:

Parcels cannot be saved right? @ceph3us – Terrel Lewis



您可以“保存” Parcelable 或 Parcel
Parcelable -----> 
Parcel.obtain() ----->
Parcelable.writeToParcel(Parcel,0) -----> // write to parcel
Parcel.marshal() ----- > byte[]

然后可以将字节保存到文件数据库或任何其他持久性或非数据存储中。你不能做的一件事是编码包含 IBinder 对象的 parcelable 阅读更多:
  • what is Binder in android
  • android binder - ipc

  • 在编码对象类之前,您需要删除活页夹 - 活页夹引用存储在内核空间中。如果活页夹来自您,您应该轻松创建一个新的并稍后分配给未编码的数据。

    ...and as such does not attempt to maintain compatibility with data created in different versions of the platform. – @FindOutIslamNow



    问题是:如何保存待处理的 Intent 本地电话

    在我的回答中,对 IBinder 进行了补救 - 通过从包裹中删除依赖于内核绑定(bind)驱动程序的部分,我们可以自由使用其余数据,这些数据只不过是字节!

    我们也可以从 Pending intent 中获取我们想要的内容并自行重新创建它(parcel 不再像我们数据的容器,IBinder 是一种传输机制,它是来自 linux 内核 binder 驱动程序的 IPC 实现 shell,类似于更知名的 2endpoints 套接字传输.

    两者(容器又名包裹和活页夹中的数据)都被称为待定 Intent - 把它想象成输送水的管道 - 当你从中取出管道时,你会得到水,但你不能再运输它了:) 喜欢在从源点到目标点之前。

    由于活页夹有自己的使用生命周期,并且在大多数情况下无法保存,因此可以将其想象为电话,其中一方没有挂断(希望它会在一段时间后恢复),而另一方则无法继续通话,因为它是岁月流逝!所以连接断开了,不能再使用了。

    关于android - 如何在手机上本地保存待处理的 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511581/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com