আপনার একটিভিটি যখন পূর্বে ধ্বংস হয়ে আবার নতুন করে তৈরী হয়, আপনি Bundle থেকে আপনার সেভ স্টেট কে উদ্ধার করতে পারেন যা সিস্টেম আপনার একটিভিটিতে পাস করে। onCreate()এবং onRestoreInstanceState()উভয় কলব্যাক মেথডই একই Bundle গ্রহণ করে যা ইনসটেন্স স্টেট তথ্য ধারন করে।
কারন onCreate()পদ্ধতিকে কল করা হয় যখন সিস্টেম আপনার একটিভিটির একটা নতুন ইনসটেন্স তৈরী করছে অথবা পুর্ববর্তী একটাকে নতুন করে তৈরী করছে, এটা পড়তে শুরু করার পুর্বেই আপনাকে অবশ্যই চেক করতে হবে যে স্টেট Bundle অগ্রহনযোগ্য কিনা। যদি এটা অগ্রহনযোগ্য হয়, তখন সিস্টেম একটিভিটির নতুন ইনসটেন্স তৈরী করতে থাকে, পূর্ববর্তী কোন একটা যা ধ্বংস হয়েছে তাকে রিস্টোর না করে।
উদাহরণস্বরূপ, এখানে দেখানো হচ্ছে কীভাবে আপনি onCreate()এর মধ্যে স্টেট ডাটা রিস্টোর করতে পারেন:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
} else {
// Probably initialize members with default values for a new instance
}
...
}
onCreate()এর সময় স্টেট রিস্টোর না করে আপনি onRestoreInstanceState() কে বাস্তবায়ন করাকে বেছে নিতে পারেন, যা সিস্টেম onStart()পদ্ধতির পওে কল করে। সিস্টেম শুধুমাত্র onRestoreInstanceState()কল করে যদি সেখানে রিস্টোর করতে একটি সেভ করা স্টেট থাকে, সুতরাং আপনাকে আর পরীক্ষা করতে হবে না যে Bundle গ্রহণযোগ্য:
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
}
সতর্কতা: সবসময়ই onRestoreInstanceState() এর সুপারক্লাস ইমপ্লিমেন্টেশন কল করুন যাতে ডিফল্ট ইমপ্লিমেন্টেশন ভিউ হায়ারকারির স্টেটটিকে রিস্টোর করতে পারে।
রান টাইমের সময় ইভেন্ট রিস্টার্ট করার জন্য আপনার একটিভিটি নতুন করে শুরু করা (যেমন, যখন স্ক্রিন রোটেট করে) সম্পর্কিত আরও তথ্য জানতে Handling Runtime Changes (http://developer.android.com/guide/topics/resources/runtime-changes.html) পড়ুন।