موبائل ایپلیکیشنز میں State Restoration: یہ کیا ہے، میکانزم اور کام کرنے کا اصول

مصنف: IT Sectr اشاعت: 2026-05-18 مطالعے کا وقت: 8 منٹ

State Restoration موبائل آپریٹنگ سسٹمز کا ایک میکانزم ہے جو ایپلیکیشن کے دوبارہ شروع ہونے یا چھوٹا کرنے کے بعد یوزر انٹرفیس کو محفوظ اور بحال کرنے کی اجازت دیتا ہے۔ سسٹم UI کی حالت کو میموری یا مستقل اسٹوریج میں محفوظ کرتا ہے اور دوبارہ کھولنے پر اسے بحال کرتا ہے۔ Android Developers (2025) کے مطابق، State Restoration ان ایپلیکیشنز کے لیے لازمی ہے جو معیاری یوزر تجربے کی خواہاں ہیں۔ State Restoration ایپلیکیشن کے غیر متوقع طور پر ختم ہونے پر ڈیٹا کے نقصان کو روکنے کے لیے اہم ہے۔

اہم نکات

  • State Restoration — ایپلیکیشن کے دوبارہ شروع ہونے پر UI کو محفوظ اور بحال کرنے کا میکانزم، یوزر ڈیٹا اور سیاق و سباق کے نقصان کو روکتا ہے۔
  • زندگی کا دورانیہ — چھوٹا کرنے، ڈیوائس ریبوٹ یا سسٹم کے ذریعے ایپلیکیشن بند کرنے کے بعد دوبارہ شروع ہونے پر بحالی متحرک ہوتی ہے۔
  • پلیٹ فارمز — iOS UIKit (NSUserActivity، UIStateRestoring) کے ذریعے State Restoration کو سپورٹ کرتا ہے، Android SavedStateHandle اور ViewModel کے ذریعے۔
  • محفوظ کرنے کا ڈیٹا — اسکرول پوزیشن، فارم میں درج کردہ ڈیٹا، نیویگیشن کی حالت، ملٹی میڈیا مواد اور منتخب کردہ آئٹمز۔
  • نفاذ — Bundle یا NSData میں حالت کو سیریلائز کرنے اور زندگی کے دورانیے کے متعلقہ طریقوں میں بحال کرنے کی ضرورت ہے۔

State Restoration کیا ہے؟

State Restoration (حالت کی بحالی) ایک سسٹم میکانزم ہے جو ایپلیکیشن کے یوزر انٹرفیس کی موجودہ حالت کو محفوظ کرنے اور ختم ہونے یا دوبارہ شروع ہونے کے بعد بحال کرنے کی اجازت دیتا ہے۔ جب کوئی یوزر ایپلیکیشن کو چھوٹا کرتا ہے یا سسٹم وسائل خالی کرنے کے لیے اسے بند کرتا ہے، State Restoration اہم UI پیرامیٹرز کو کیپچر کرتا ہے اور انہیں خفیہ کردہ اسٹوریج میں محفوظ کرتا ہے۔

State Restoration کے بغیر، یوزر ایپلیکیشنز کے درمیان سوئچ کرتے وقت تمام غیر محفوظ شدہ ڈیٹا کھو دیتے ہیں۔ مثال کے طور پر، بھرا ہوا فیڈ بیک فارم، لمبا تلاش کا سوال یا جزوی طور پر دیکھی گئی خبروں کی فہرست — یہ سب دوبارہ شروع ہونے پر غائب ہو جاتا ہے۔ State Restoration چھوٹا کرنے کے لمحے ViewController یا Activity کی حالت کو خود بخود کیپچر کرکے اس مسئلے کو حل کرتا ہے۔

میکانزم سسٹم لیول پر کام کرتا ہے اور دونوں اہم موبائل پلیٹ فارمز کے ذریعے سپورٹ کیا جاتا ہے۔ iOS NSUserActivity اور UIStateRestoring پروٹوکول کے ذریعے State Restoration فراہم کرتا ہے، جبکہ Android Jetpack آرکیٹیکچرل اجزاء اور ViewModel میں SavedStateHandle کے ذریعے فراہم کرتا ہے۔ نفاذ مختلف ہے، لیکن تصور ایک جیسا ہے۔

State Restoration کیسے کام کرتا ہے؟

State Restoration کا عمل دو مراحل میں تقسیم ہوتا ہے: محفوظ کرنا اور بحال کرنا۔ محفوظ کرنے کے مرحلے میں، سسٹم زندگی کے دورانیے کے متعلقہ طریقوں کو کال کرتا ہے، جس میں ایپلیکیشن کو موجودہ UI حالت کو مختصر نمائندگی میں سیریلائز کرنا ہوتا ہے۔ بحال کرنے کے مرحلے میں، سسٹم محفوظ کردہ ڈیٹا واپس بھیجتا ہے، اور ایپلیکیشن UI کو بحال کرنے کے لیے اسے ڈی سیریلائز کرتی ہے۔

حالت محفوظ کرنے کا میکانزم

محفوظ کرنا سسٹم کے ذریعے شروع کیا جاتا ہے جب ایپلیکیشن بیک گراؤنڈ میں جاتی ہے یا قریب قریب ختم ہونے کا سگنل وصول کرتی ہے۔ iOS میں، UIViewController کا encodeRestorableState طریقہ کال کیا جاتا ہے؛ Android میں، Activity کا onSaveInstanceState یا SavedStateHandle کے ذریعے محفوظ کرنا متحرک ہوتا ہے۔ ڈیٹا کو ایک فارمیٹ میں سیریلائز کیا جاتا ہے جو ابتدائی اقسام کو سپورٹ کرتا ہے: سٹرنگز، نمبرز، بائٹ اریز اور Parcelable آبجیکٹ۔

محفوظ کردہ ڈیٹا کی مقدار کم سے کم ہونی چاہیے — سسٹم محفوظ شدہ حالت کے بنڈل کے سائز پر حدود عائد کرتا ہے۔ Android میں، حد تقریباً 50 KB فی عمل ہے۔ حد سے تجاوز کرنے سے TransactionTooLargeException مستثنیٰ پیدا ہوتا ہے۔ لہذا، آرکیٹیکٹس صرف شناخت کنندگان اور چابیاں محفوظ کرنے کی تجویز کرتے ہیں، اور بحالی پر مستقل اسٹوریج سے مکمل ڈیٹا لوڈ کرتے ہیں۔

محفوظ شدہ حالت سے UI بحال کرنا

بحالی کے دوران، سسٹم شروع ہونے پر محفوظ کردہ ڈیٹا کا بنڈل ایپلیکیشن کو بھیجتا ہے۔ iOS میں، decodeRestorableState طریقہ کال کیا جاتا ہے؛ Android میں، onRestoreInstanceState یا SavedStateHandle سے پڑھنا استعمال ہوتا ہے۔ ایپلیکیشن بنڈل سے شناخت کنندگان اور چابیاں نکالتی ہے اور UI کو بحال کرتی ہے: اسکرول پوزیشن، منتخب کردہ آئٹمز، درج کردہ ڈیٹا۔

یہ نوٹ کرنا ضروری ہے کہ بحالی ایک نئے عمل میں ہو سکتی ہے۔ اگر ایپلیکیشن مکمل طور پر میموری سے ان لوڈ ہو گئی تھی، تو عمل نئے سرے سے بنایا جاتا ہے، اور میموری میں موجود تمام آبجیکٹ غائب ہوتے ہیں۔ لہذا، حالت سیریلائز ایبل اور پچھلے سیشن کے رن ٹائم سیاق و سباق سے آزاد ہونی چاہیے۔ یہ خاص طور پر متعدد ان پٹ فیلڈز والے بڑے فارمز اور لمبے کثیر الصفحہ انٹرفیس کے لیے اہم ہے۔

kotlin
class MainActivity : AppCompatActivity() {
    private var searchQuery: String = ""

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("search_query", searchQuery)
    }

    override fun onRestoreInstanceState(savedState: Bundle) {
        super.onRestoreInstanceState(savedState)
        searchQuery = savedState.getString("search_query", "")!!
        restoreSearchUI(searchQuery)
    }
}

iOS اور Android پر State Restoration

State Restoration کا نفاذ پلیٹ فارمز کے درمیان نمایاں طور پر مختلف ہے۔ iOS اسٹوری بورڈز اور UIKit پروٹوکولز کے ذریعے اعلامیاتی طریقہ استعمال کرتا ہے، جبکہ Android Activity کے زندگی کے دورانیے کے طریقوں اور Jetpack آرکیٹیکچرل اجزاء کے ذریعے لازمی طریقہ استعمال کرتا ہے۔ طریقہ کا انتخاب ہدف پلیٹ فارم اور ایپلیکیشن آرکیٹیکچر پر منحصر ہے۔

iOS (UIKit) میں State Restoration

iOS میں، State Restoration تین اجزاء پر بنایا گیا ہے: UIApplication مجموعی عمل کا انتظام کرتا ہے، UIViewController UIStateRestoring پروٹوکول کو نافذ کرتا ہے، اور NSUserActivity نیویگیشن بحالی کے لیے ڈیٹا محفوظ کرتا ہے۔ اسے فعال کرنے کے لیے، UIViewController پر restorationIdentifier سیٹ کرنا اور encodeRestorableState اور decodeRestorableState کو نافذ کرنا ضروری ہے۔

iOS خود بخود نیویگیشن کنٹرولر (UINavigationController) اور تمام نیسٹڈ ViewController کی حالت کو محفوظ کرتا ہے اگر ان کے پاس restorationIdentifier سیٹ ہو۔ سسٹم نیویگیشن اسٹیک کا انتظام کرتا ہے اور اسے اصل حالت میں بحال کرتا ہے۔ تاہم، کنٹرولرز کے اندر موجود ڈیٹا (درج کردہ متن، اسکرول پوزیشن) ڈیولپر کو واضح طور پر محفوظ کرنا ہوگا۔

Android (SavedStateHandle) میں State Restoration

Android میں، State Restoration کا جدید طریقہ SavedStateHandle — AndroidX Lifecycle لائبریری کے ایک جزو — پر بنایا گیا ہے۔ SavedStateHandle ViewModel کے اندر قابل رسائی ہے اور کنفیگریشن تبدیلیوں (اسکرین گھومنے) اور عمل کے دوبارہ شروع ہونے پر خود بخود ڈیٹا کو محفوظ اور بحال کرتا ہے۔ ڈیٹا Bundle میں محفوظ ہوتا ہے اور خود بخود سیریلائز ہو جاتا ہے۔

SavedStateHandle LiveData سپورٹ کے ساتھ کلید-قدر ذخیرہ کی طرح برتاؤ کرتا ہے۔ کنفیگریشن تبدیلیوں پر، ڈیٹا خود بخود محفوظ اور بحال ہوتا ہے۔ عمل کے دوبارہ شروع ہونے کو سپورٹ کرنے کے لیے، ViewModel کو SavedStateViewModelFactory کے ذریعے بنایا جانا چاہیے — یہ ViewModel کو ایپلیکیشن کے مکمل ختم ہونے کے بعد بھی زندہ رہنے دیتا ہے۔

kotlin
class SearchViewModel(
    private val savedStateHandle: SavedStateHandle
) : ViewModel() {

    companion object {
        private val KEY_QUERY = string("search_query")
    }

    fun getSearchQuery(): String? = savedStateHandle[KEY_QUERY]

    fun saveSearchQuery(query: String) {
        savedStateHandle[KEY_QUERY] = query
    }
}

کوڈ میں State Restoration کا نفاذ

State Restoration کے عملی نفاذ کے لیے کئی پہلوؤں پر غور کرنے کی ضرورت ہے: صحیح اسٹوریج کا انتخاب، محفوظ کرنے کے لیے ڈیٹا کی مقدار کا تعین اور مختلف ختم ہونے کے منظرناموں کی جانچ۔ آئیے Flutter ایپلیکیشن کے لیے state_restoration پیکیج استعمال کرتے ہوئے مرحلہ وار نفاذ دیکھتے ہیں۔

dart
class RestorableSearchField extends RestorableProperty<String> {
  String _value = '';

  @override
  String get value => _value;

  @override
  void set value(String newValue) {
    if (_value != newValue) {
      _value = newValue;
      notifyListeners();
    }
  }

  @override
  String? toPrimitives() => _value;

  @override
  void fromPrimitives(String? data) {
    _value = data ?? '';
  }
}

نفاذ کرتے وقت، محفوظ کرنے کی حدوں کو یاد رکھنا ضروری ہے۔ ہر UI فیلڈ کو بحال کرنے کی ضرورت نہیں ہے۔ لمبی فہرست میں اسکرول پوزیشن — ہاں۔ عارضی اینیمیشن حالت — نہیں۔ ڈیولپر کو شعوری طور پر انتخاب کرنا چاہیے کہ کون سا ڈیٹا یوزر تجربے کے لیے اہم ہے اور کسے سہولت کے نقصان کے بغیر محفوظ طریقے سے ری سیٹ کیا جا سکتا ہے۔

State Restoration کی جانچ ایک علیحدہ کام ہے جس کے لیے عمل کے خاتمے کی نقلی کی ضرورت ہے۔ Android پر، یہ adb shell am kill کمانڈ کے ذریعے کیا جا سکتا ہے؛ iOS پر، Xcode میں خاتمے کی نقلی کے ذریعے۔ UI جانچ کے فریم ورکس جیسے Espresso اور XCTest حالت کی بحالی کی تصدیق کے لیے خصوصی طریقے فراہم کرتے ہیں۔

State Restoration کے بہترین طریقے

پہلا اصول — شناخت کنندگان محفوظ کریں، ڈیٹا نہیں۔ سو فیلڈز والی مکمل آبجیکٹ کو محفوظ کرنے کے بجائے، اس کا منفرد شناخت کنندہ محفوظ کریں، اور بحالی پر ڈیٹا بیس یا API سے اصل ڈیٹا لوڈ کریں۔ یہ Bundle میں جگہ بچاتا ہے اور بحالی کے وقت ڈیٹا کی تازگی کی ضمانت دیتا ہے۔

دوسرا اصول — تمام منظرناموں کی جانچ کریں۔ اسکرین گھومنے کے بعد، چھوٹا کرنے اور ایک گھنٹے بعد واپس آنے کے بعد، میموری کی کمی کی وجہ سے سسٹم کے ایپلیکیشن ختم کرنے کے بعد بحالی کی جانچ کریں۔ ہر منظر نامہ آپریٹنگ سسٹم کی حالت اور دستیاب وسائل کے لحاظ سے مختلف طریقے سے برتاؤ کر سکتا ہے۔

تیسرا اصول — سسٹم میکانزم استعمال کریں، اپنی مرضی کے نہیں۔ iOS اور Android State Restoration کے لیے بلٹ ان API فراہم کرتے ہیں جو ان کے مخصوص پلیٹ فارم کے لیے بہتر بنائے گئے ہیں۔ SharedPreferences یا UserDefaults کے ذریعے اپنی مرضی کا نفاذ مطابقت پذیری کے مسائل اور بحالی کے دوران غیر متوقع رویے کا سبب بن سکتا ہے۔

چوتھا اصول — حالت کی عدم موجودگی کو ہینڈل کریں۔ پہلی لانچ پر یا ڈیٹا صاف کرنے کے بعد، حالت موجود نہیں ہو سکتی۔ UI کو مستثنیات پھینکے بغیر اپنی ابتدائی حالت میں صحیح طریقے سے کام کرنا چاہیے۔ استعمال سے پہلے تمام محفوظ کردہ ڈیٹا کو null کے لیے چیک کریں اور ڈیفالٹ ویلیوز فراہم کریں۔

پانچواں اصول — محفوظ کردہ چابیاں دستاویز کریں۔ جب کسی پروجیکٹ میں درجنوں اسکرینیں ہوں اور ہر ایک کئی فیلڈز محفوظ کرے، تو مرکزی کلیدی نظم و نسق کے بغیر افراتفری پیدا ہوتی ہے۔ ہر ماڈیول میں State Restoration کے لیے کلیدی مستقلات کے ساتھ ایک کلاس یا فائل بنائیں۔ یہ دیکھ بھال کو آسان بناتا ہے اور ری فیکٹرنگ کے دوران حادثاتی ڈیٹا اوور رائٹ کو روکتا ہے۔

اکثر پوچھے گئے سوالات

موبائل ایپلیکیشنز میں State Restoration کیا ہے؟

State Restoration ایک میکانزم ہے جو ایپلیکیشن کے دوبارہ شروع ہونے یا چھوٹا کرنے کے بعد یوزر انٹرفیس کو محفوظ اور بحال کرتا ہے، ڈیٹا اور یوزر سیاق و سباق کے نقصان کو روکتا ہے۔

State Restoration ڈیٹا بیس میں محفوظ کرنے سے کیسے مختلف ہے؟

State Restoration عارضی UI حالت (اسکرول پوزیشن، فارم ڈیٹا) محفوظ کرتا ہے، جبکہ ڈیٹا بیس مستقل یوزر ڈیٹا ذخیرہ کرتا ہے۔ State Restoration حجم کی حدود کے ساتھ سسٹم میکانزم (Bundle، NSData) استعمال کرتا ہے۔

Android میں State Restoration کیسے نافذ کریں؟

AndroidX Lifecycle سے ViewModel میں SavedStateHandle استعمال کریں۔ یہ چھوٹا کرنے پر خود بخود ڈیٹا محفوظ کرتا ہے اور واپسی پر بحال کرتا ہے۔ مکمل ری اسٹارٹ سپورٹ کے لیے SavedStateViewModelFactory استعمال کریں۔

iOS میں State Restoration کیسے نافذ کریں؟

UIViewController پر restorationIdentifier سیٹ کریں اور encodeRestorableState اور decodeRestorableState طریقوں کو نافذ کریں۔ نیویگیشن کے لیے، کنٹرولر اسٹیک میں راستے کو محفوظ رکھتے ہوئے NSUserActivity استعمال کریں۔

State Restoration کے دوران کون سا ڈیٹا محفوظ کرنا چاہیے؟

مکمل ڈیٹا نہیں، شناخت کنندگان محفوظ کریں: منتخب کردہ آئٹم کا ID، تلاش کا سوال، اسکرول پوزیشن، ٹوگل حالتیں۔ بڑی آبجیکٹ اور تصاویر محفوظ کرنے سے گریز کریں۔

خلاصہ

  • State Restoration — ایپلیکیشن ری اسٹارٹ پر UI کو محفوظ اور بحال کرنے کا سسٹم میکانزم، یوزر تجربے کے لیے اہم۔
  • iOS — نیویگیشن اور کنٹرولر ڈیٹا محفوظ کرنے کے لیے UIStateRestoring پروٹوکول اور NSUserActivity استعمال کرتا ہے۔
  • Android — خودکار حالت محفوظ کرنے اور بحال کرنے کے لیے ViewModel میں SavedStateHandle فراہم کرتا ہے۔
  • Flutter — ویجیٹ حالت محفوظ کرنے کے لیے RestorableProperty اور RestorableStatefulWidget کو سپورٹ کرتا ہے۔
  • حدود — محفوظ کردہ ڈیٹا کا سائز محدود (~50 KB Android پر)، صرف شناخت کنندگان محفوظ کریں۔
  • جانچ — تمام منظرناموں کی جانچ لازمی: اسکرین گھومنا، چھوٹا کرنا، سسٹم کے ذریعے عمل کا خاتمہ۔
  • حکمت عملی — فائلوں یا SharedPreferences کے ذریعے اپنی مرضی کے نفاذ کے بجائے سسٹم API استعمال کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں