Serialization is a process of reading or writing an object. It is a process of saving an object’s state to a sequence of bytes, as well as a process of rebuilding those bytes back into a live object at some future time. An object is marked serializable by implementing the java.io.Serializable interface, which is only a marker interface -- it simply allows the serialization mechanism to verify that the class can be persisted, typically to a file.
Transient variables cannot be serialized. The fields marked transient in a serializable object will not be transmitted in the byte stream. An example would be a file handle, a database connection, a system thread etc. Such objects are only meaningful locally. So they should be marked as transient in a serializable class.
Serialization can adversely affect performance since it:
- Depends on reflection.
- Has an incredibly verbose data format.
- Is very easy to send surplus data..
Example Pass Custom Object by implementing Serializable interface:
Create Person.java an Serializable class: :
package com.imrankhanandroid.Passdserialzedata;
import java.io.Serializable;
//Person Serializable Class
public class Person implements Serializable {
//serialVersionUID generated by serialver tool.
private static final long serialVersionUID = 10275439472837494L;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Create ObejctSenderActivity Activity: :
package com.imrankhanandroid.Passdserialzedata;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ObejctSenderActivity extends Activity {
private Button sButton;
public final static String SER_KEY =
"com.imrankhanandroid.Passdserialzedata.ser";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sButton = (Button)findViewById(R.id.btnsend);
sButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
SerializeMethod();
}
});
}
//Serializeable Passing objects
public void SerializeMethod(){
//Create an mPerson Object of Person Class
Person mPerson = new Person();
mPerson.setName("Imran Khan");
mPerson.setAge(25);
//Create an Intent for Passing to startActivity
Intent mIntent = new Intent(this,ObjectReceiverActivity.class);
Bundle mBundle = new Bundle();
//put mPerson in bundle using putSerializable
mBundle.putSerializable(SER_KEY,mPerson);
mIntent.putExtras(mBundle);
startActivity(mIntent);
}
}
Create ObjectReceiverActivity Activity: :
package com.imrankhanandroid.Passdserialzedata;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
public class ObjectReceiverActivity extends Activity{
TextView txtview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintwo);
//Get person object from Intent deliver to ObjectReceiverActivity
Person mPerson = (Person)getIntent()
.getSerializableExtra(ObejctSenderActivity.SER_KEY);
txtview=(TextView)findViewById(R.id.txtrev);
txtview.append(Html.fromHtml("
Person Name :"+mPerson.getName()
+"
Person Age :"+mPerson.getAge()));
}
}
res/layout/main.xml: :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Welcome to Imran Khan's Blog."
android:gravity="center"
android:layout_marginTop="80dp"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Object Sender Activity"
android:gravity="center"
android:layout_marginTop="80dp"
/>
<Button
android:id="@+id/btnsend"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Send Serializable Object"
android:textSize="25px"
android:layout_marginTop="15dp"
/>
</LinearLayout>
res/layout/maintwo.xml: :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Obecjt Reciver Activity"
android:gravity="center"
android:layout_marginTop="80dp"
android:textSize="25px"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Data Recived from Sender Activity:-"
android:layout_marginTop="80dp"
android:id="@+id/txtrev"
android:textSize="25px"
/>
</LinearLayout>
res/layout/maintwo.xml: :
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.imrankhanandroid.Passdserialzedata"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="Welcome to Imran Khan's Blog."
android:name=".ObejctSenderActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ObjectReceiverActivity"></activity>
</application>
</manifest>
Download Source Code: PassdatausingSerializable






0 comments:
Post a Comment