কী বাঁচাবেন আর কী করবেন না?
কখনও ভেবে দেখেছেন কেন EditText
অভিমুখী পরিবর্তন চলাকালীন পাঠ্যগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ হয়? ঠিক আছে, এই উত্তরটি আপনার জন্য।
যখন কোনও ক্রিয়াকলাপের উদাহরণ নষ্ট হয়ে যায় এবং সিস্টেম একটি নতুন উদাহরণ পুনরায় তৈরি করে (উদাহরণস্বরূপ, কনফিগারেশন পরিবর্তন)। এটি পুরানো ক্রিয়াকলাপ রাজ্যের ( উদাহরণস্বরূপ রাজ্য ) এর সংরক্ষিত ডেটার সেট ব্যবহার করে এটি পুনরায় তৈরি করার চেষ্টা করে ।
ইনস্ট্যান্স রাজ্য হ'ল একটি বস্তুতে সঞ্চিত কী-মান জোড়ার সংকলন Bundle
।
ডিফল্টরূপে সিস্টেম উদাহরণস্বরূপ বান্ডলে ভিউ অবজেক্টগুলিকে সংরক্ষণ করে।
- পাঠ্য
EditText
- এ
ListView
ইত্যাদিতে স্ক্রোল অবস্থান
উদাহরণস্বরূপ অংশ হিসাবে সংরক্ষণের জন্য আপনার যদি অন্য ভেরিয়েবলের প্রয়োজন হয় তবে আপনার পদ্ধতিটি ওভাররিড করা উচিত onSavedInstanceState(Bundle savedinstaneState)
।
উদাহরণস্বরূপ, int currentScore
একটি গেমঅ্যাক্টিভিটিতে
ডেটা সংরক্ষণ করার সময় onSaaveInstanceState (বান্ডেল সেভডইনস্টেন স্টেট) সম্পর্কে আরও বিশদ
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
সুতরাং ভুল করে আপনি কল করতে ভুলে
super.onSaveInstanceState(savedInstanceState);
গেলে ডিফল্ট আচরণটি কার্যকর হবে না অর্থাৎ সম্পাদনা পাঠ্য পাঠ্য সংরক্ষণ করবে না।
কার্যকলাপের অবস্থা পুনরুদ্ধারের জন্য কোনটি বেছে নেবেন?
onCreate(Bundle savedInstanceState)
অথবা
onRestoreInstanceState(Bundle savedInstanceState)
উভয় পদ্ধতিই একই বান্ডিল বস্তু পায়, তাই আপনি যেখানে আপনার পুনরুদ্ধার যুক্তিটি লিখেন তাতে আসলেই কিছু আসে যায় না। পার্থক্যটি হ'ল onCreate(Bundle savedInstanceState)
পদ্ধতিতে আপনাকে নাল চেক দিতে হবে যখন এটি পরবর্তী ক্ষেত্রে প্রয়োজন হয় না। অন্যান্য উত্তরে ইতিমধ্যে কোড স্নিপেট রয়েছে। আপনি তাদের উল্লেখ করতে পারেন।
OnRestoreInstanceState (বান্ডিল সেভডইনস্টেন স্টেট) সম্পর্কে আরও বিশদ
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from the saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
}
সর্বদা কল করুন super.onRestoreInstanceState(savedInstanceState);
যাতে সিস্টেমটি ডিফল্টরূপে ভিউ হায়ারার্কিকে পুনরুদ্ধার করে
বোনাস
onSaveInstanceState(Bundle savedInstanceState)
সিস্টেম দ্বারা প্রার্থনা শুধুমাত্র যখন ব্যবহারকারী কার্যকলাপ ফিরে আসা করতে ইচ্ছুক হয়। উদাহরণস্বরূপ, আপনি অ্যাপ এক্স ব্যবহার করছেন এবং হঠাৎ আপনি একটি কল পান। আপনি কলার অ্যাপে চলে যান এবং এক্স অ্যাপে ফিরে আসেন this এক্ষেত্রেonSaveInstanceState(Bundle savedInstanceState)
পদ্ধতিটি শুরু করা হবে।
কোনও ব্যবহারকারী যদি পিছনের বোতামটি টিপেন তবে এটি বিবেচনা করুন। ধারণা করা হয় যে ব্যবহারকারীর ক্রিয়াকলাপে ফিরে আসার ইচ্ছা নেই, সুতরাং onSaveInstanceState(Bundle savedInstanceState)
এক্ষেত্রে সিস্টেম দ্বারা প্রার্থনা করা হবে না। পয়েন্ট হ'ল ডেটা সংরক্ষণের সময় আপনার সমস্ত পরিস্থিতি বিবেচনা করা উচিত।
প্রাসঙ্গিক লিঙ্ক:
ডিফল্ট আচরণের ডেমো
অ্যান্ড্রয়েড অফিসিয়াল ডকুমেন্টেশন ।