. , . "Singleton pattern" - , , .
, . ( , - , ).
"MainActivity" - :
var testObj = new TestObjectToSerialize();
testObj.testString = "testString";
var formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, testObj);
var secondActivity = new Intent(this, typeof(SecondActivity));
secondActivity.PutExtra("testObj", stream.ToArray());
StartActivity(secondActivity);
SecondActivity , :
var byteArr = Intent.GetByteArrayExtra("testObj");
var stream = new MemoryStream(byteArr);
var formatter = new BinaryFormatter();
var testObj = formatter.Deserialize(stream) as TestObjectToSerialize;
Toast.MakeText(this, testObj.testString, ToastLength.Long).Show();
. Java.IO.ISerializable.
Mono.Android.Export.dll . TestObjectToSerialize , :
using Java.Interop;
:
public class TestObjectToSerialize : Java.Lang.Object, Java.IO.ISerializable
{
public string testString { set; get; }
public TestObjectToSerialize()
{
Console.WriteLine("TestObjectToSerialize..ctor");
}
public TestObjectToSerialize(IntPtr handle, JniHandleOwnership transfer)
: base(handle, transfer)
{
Console.WriteLine("TestObjectToSerialize..ctor(IntPtr, JniHandleOwnership)");
}
[Export("readObject", Throws = new[] {
typeof (Java.IO.IOException),
typeof (Java.Lang.ClassNotFoundException)})]
private void ReadObjectDummy(Java.IO.ObjectInputStream source)
{
testString = ReadNullableString(source);
}
[Export("writeObject", Throws = new[] {
typeof (Java.IO.IOException),
typeof (Java.Lang.ClassNotFoundException)})]
private void WriteObjectDummy(Java.IO.ObjectOutputStream destination)
{
WriteNullableString(destination, testString);
}
static void WriteNullableString(Java.IO.ObjectOutputStream dest, string value)
{
dest.WriteBoolean(value != null);
if (value != null)
dest.WriteUTF(value);
}
static string ReadNullableString(Java.IO.ObjectInputStream source)
{
if (source.ReadBoolean())
return source.ReadUTF();
return null;
}
}
MainActivity :
var testObj = new TestObjectToSerialize();
testObj.testString = "testString";
var secondActivity = new Intent(this, typeof(SecondActivity));
secondActivity.PutExtra("testObj", testObj);
StartActivity(secondActivity);
SecondActivity :
var testObj = Intent.GetSerializableExtra("testObj") as TestObjectToSerialize;
Toast.MakeText(this, testObj.testString, ToastLength.Long).Show();
=)