草庐IT

Marshalling

全部标签

android - 使用 Parcelable 是在应用程序之间发送数据的正确方法吗?

我试图了解如何在Android中的应用程序之间进行通信-而不仅仅是在Activity实例之间进行通信。我设置了一个“客户端”,将Messengerobj发送到服务(在发送到服务的Intent中);该服务创建一个Messageobj,并使用messenger.send(message)将其发送回“客户端”。在我尝试使用Message.obj保存对象之前,这一切正常。我在服务中创建了自己的Parcelable类MyParcelable,并放入消息中。一切正常,直到消息在“客户端”中被解码。解码失败,因为“客户端”无权访问MyParcelable类。这很明显-它们位于不同的包中(比如com.

android - 可序列化对象在放入包中时是否总是被序列化?

我们想知道当将Bundle与可序列化或可打包对象一起使用时,编码实际上何时发生?一旦你把它放在包里?由于bundle主要用于在两个屏幕之间简单地传递数据(我们在这里甚至没有谈论IPC!),编码对象似乎没有多大意义,因为它一直保留在内存中,不?我们是否正确地假设编码(无论是Java序列化还是Android打包)仅在以下情况下发生数据必须传递给另一个进程,例如在RMI期间,或组件(Activity或服务)被销毁并且实例状态必须写入磁盘?我见过Android框架工程师(我相信是DianneHackborn)说应该使用Parcelable而不是Serializable因为前者要快得多。快多少?

Android:是否有不使用 marshall() 从 Parcelable 到 Serializable 的快捷方式?

我知道Parcelable之间的性能差异(快速)和Serializable(减缓)。但是,我需要持久存储某些应用程序信息,而不仅仅是在一个生命周期内,因此onSaveInstanceState和使用Parcelable对象的相关方法并不合适。所以我把注意力转向了Serializable.我主要有AbstractList要存储的类型-这很好,因为它们实现了Serializable.但是,我在其中存储的许多类型都是Parcelable但不是Serializable,例如RectF.我认为“没问题”,因为我可以通过Parcelable.writeToParcel(parcel,flags)轻

java - 将通用列表从 XML 反序列化/解码为 Android 中的列表

我在java中创建了一个web服务,其方法返回一个字符串(XML格式的通用列表)。我从Android使用此Web服务,并得到此字符串,但经过几次尝试后,Android模拟器在尝试反序列化字符串时崩溃了。这是我得到的字符串的示例:18329http://cache-cmx.netmx.mx/image/muestras/5368.rrr.jpg007OperaciónSkyfall...这是网络服务中的类:@XmlRootElementpublicclassPeliculas{@XmlElement(name="pelicula")protectedListpeli

c# - P/Invoke with arrays of double - 在 C# 和 C++ 之间编码数据

我已经阅读了关于C++InteropwithP/Invoke的各种MSDN页面here和here但我仍然很困惑。我有一些大型double组需要进入native代码,还有一些结果数组需要返回。我事先不知道输出数组的大小。为简单起见,我将在示例中仅使用一个数组。平台是x64;我读到32位和64位环境之间的内部编码非常不同,因此这可能很重要。C#[DllImport("NativeLib.dll")]publicstaticexternvoidComputeSomething(double[]inputs,intinlen,[Out]outIntPtroutputs,[Out]outinto

c# - C++中字符串的L前缀

我有一个静态库。该库定义了以下函数intWriteData(LPTSTRs)调用函数的示例是LPTSTRs=(LPTSTR)L"TestData";intn=WriteData(s);WriteData成功返回0,失败返回-1。我正在编写一个动态DLL来导出此函数。intTestFun(LPTSTRlpData){returnWriteData(lpData);}一个C++测试应用结果LPTSTRs=(LPTSTR)L"TestData";TestFun(s);//OKreturn0LPTSTRs=(LPTSTR)"TestData";TestFun(s);//Failreturn-1

c# - 如何在 C# 中编码(marshal) C++ 枚举

我需要在C++和C#之间创建一个包装器。我有一个与此非常相似的功能:virtualSOMEINTERFACE*MethodName(ATTRIBUTE_TYPEattribType=ATTRIBUTE_TYPE::ATTRIB_STANDARD)=0;enum声明如下:enumclassATTRIBUTE_TYPE{ATTRIB_STANDARD,ATTRIB_LENGTH};如何包装ATTRIBUTE_TYPE枚举? 最佳答案 您的C++枚举定义如下:enumclassATTRIBUTE_TYPE{ATTRIB_STANDARD,

windows - 编码一个编码接口(interface)是否给我一个到代理或原始接口(interface)的编码器?

这是一个具体的例子:我创建了一个IWeBrowser2通过调用wb.CoCreateInstance(CLSID_InternetExplorer,0,CLSCTX_SERVER);接口(interface)。这为我提供了一个从我的进程到任何正在运行的iexplore.exe进程的编码接口(interface),该进程恰好在我的线程A中包含此浏览器选项卡。现在我使用IGlobalInterfaceTable要获取此接口(interface)的cookie,请将其传递到我的线程B并从那里请求编码接口(interface)。问题:我是在我的线程A中获取代理到代理还是直接到IE进程中的实例?

windows - 进程外 COM 服务器卡住

我正在使用进程外COM服务器(使用DECLARE_CLASSFACTORY_SINGLETON实现的COM单例“引擎”),它在STA(CComSingleThreadModel,_ATL_APARTMENT_THREADED)中工作。COM服务器客户端:ActiveScript(JScript),(我使用AddNamedItem传递引擎引用)。两个独立的IEBHO。BHO周期性调用Engine::dispatchEvent,Engine调用ActiveScript的JavaScript函数。在我同时打开两个BHO之前,此架构一直运行良好。如果我打开两个BHO,当我调用ActiveScr

c# - 如何正确地将字符串从 Unity 编码到 C/C++?

以下代码片段来自UnitiesBonjour客户端示例,它演示了如何与来自C#的native代码进行交互。这是一个简单的C函数,可将字符串返回给C#(Unity):char*MakeStringCopy(constchar*string){if(string==NULL)returnNULL;char*res=(char*)malloc(strlen(string)+1);strcpy(res,string);returnres;}constchar*_GetLookupStatus(){//Bydefaultmonostringmarshalercreates.Netstringfo