我正在尝试将从DrawingCache(在我的活动类中)创建的位图传递给AIDL服务。但这不会传递给服务。甚至我服务中的storeImage方法也不会打印我的日志。虽然如果我从资源中获取任何位图(png),然后将其从我的活动传递给AIDL服务,它就可以工作。
由于某些限制,我无法将WRITE_EXTERNAL_STORAGE权限添加到我的活动类,这就是我将此位图传递给服务以将其存储在Sdcard中的原因。如果暂时我将此权限添加到我的活动中,并且只在活动类中存储过程,那么图像将被正确存储。但是,如果我将此图像放在资源文件夹中然后将其发送到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);
}
答案 0 :(得分:0)
您可以使用某种中介类,因为您只能通过本机数据类型从应用程序中的其他位置(例如“活动”)与您的服务进行通信。如果使用静态HashMap创建一个类,则可以存储Bitmap和某种键(可能是存储它的时间戳或其他区分Bitmap的方法),然后将密钥传递给Service,Service然后可以使用密钥检索位图。确保在完成和失败时清理Bitmap引用。