Android 无法将位图从活动传递到AIDL服务

Android 无法将位图从活动传递到AIDL服务,android,Android,我正在尝试将从DrawingCache(在我的活动类中)创建的位图传递给AIDL服务。但这并没有传递给服务部门。甚至我的服务中的storeImage方法也不会打印我的日志。虽然如果我从资源中获取任何位图(png),然后将其从我的活动传递到AIDL服务,它仍然可以工作 由于某些限制,我无法将WRITE_EXTERNAL_存储权限添加到我的活动类中,这就是我将此位图传递给服务以将其存储在SD卡中的原因。如果我临时将此权限添加到我的活动中,并且仅在活动类中执行存储过程,则图像将正确存储。但是,如果我将

我正在尝试将从DrawingCache(在我的活动类中)创建的位图传递给AIDL服务。但这并没有传递给服务部门。甚至我的服务中的storeImage方法也不会打印我的日志。虽然如果我从资源中获取任何位图(png),然后将其从我的活动传递到AIDL服务,它仍然可以工作

由于某些限制,我无法将WRITE_EXTERNAL_存储权限添加到我的活动类中,这就是我将此位图传递给服务以将其存储在SD卡中的原因。如果我临时将此权限添加到我的活动中,并且仅在活动类中执行存储过程,则图像将正确存储。但是,如果我将此图像放在资源文件夹中,然后将其发送到AIDL服务,则不会调用storeImage方法

此代码适用于大多数设备,但很少不起作用。这是使用view创建的位图吗。getDrawingCache()错误吗

以下是代码块:

 view.buildDrawingCache();
 bitmap = view.getDrawingCache();

 //This code block sends the bitmap to the service

if (logProvider != null && logProvider.isServiceRunning()) {
    logProvider.storeBitmap(bitmap);
}

您可以使用一种中介类,因为您只能通过本机数据类型从应用程序中的其他位置(例如活动)与您的服务通信。如果使用静态HashMap创建一个类,则可以存储位图和某种键(可能是存储该位图的时间戳或其他区分位图的方式),然后将该键传递给服务,然后服务可以使用该键检索位图。完成后和出现故障时,请确保清理位图引用。

缩放位图成功。我想是位图的大小。因此,对于我的例子,我可以得出结论,向远程服务发送位图有一些大小限制。现在代码也在三星平板电脑上运行。我是这样做的:bitmap=bitmap.createScaledBitmap(bitmap,bitmap.getWidth()/2,bitmap.getHeight()/2,true);如果你在做IPC,确实有一些尺寸限制。此外,它可能会有点慢,这可能是一个好主意,转移,比如说,png压缩图像代替。为了确保不达到IPC大小限制,您可以始终以块的形式发送图像数据。