Screen Continuity: یہ کیا ہے، فولڈ API اور انٹرفیس کی موافقت

مصنف: IT Sectr اشاعت: 2026-06-09 مطالعے کا وقت: 5 منٹ

Screen Continuity — ایک اینڈرائیڈ میکانزم ہے جو فولڈایبل ڈیوائس کی موڑی ہوئی اور کھلی ہوئی حالتوں کے درمیان ایپ کا بلا تعطل منتقلی یقینی بناتا ہے۔ کھولنے پر اسکرین اپنے طبعی ابعاد تبدیل کرتی ہے اور سسٹم نئی تشکیلات کے ساتھ Activity کو دوبارہ شروع کرتا ہے۔ Google Developer, 2025 کے مطابق، تسلسل کی صحیح پروسیسنگ صارف کے تجربے کو 40% بہتر بناتی ہے اور حالت کھونے کی شکایات کو کم کرتی ہے۔ ScreenContinuity API Jetpack WindowManager کا حصہ ہے جو ورژن 1.1 سے شروع ہوتی ہے اور ڈویلپر کو ڈیوائس کی پوزچر تبدیل ہونے پر لائف سائیکل منظم کرنے کی اجازت دیتی ہے۔

اہم نکات

  • Screen Continuity — اینڈرائیڈ فولڈایبل ڈیوائسز پر اسکرین کی طبعی تشکیل تبدیل ہونے پر Activity حالت محفوظ رکھنے کی ٹیکنالوجی۔
  • Jetpack WindowManager ڈیوائس پوزچرز ٹریک کرنے کے لیے API فراہم کرتا ہے: HALF_OPENED، FLAT، TABLE_TOP۔
  • onRetainNonConfigurationInstance — موڑنے یا کھولنے کے بعد Activity دوبارہ بننے پر ڈیٹا محفوظ رکھنے کا اہم طریقہ۔
  • جانچ تسلسل کی جانچ Android Studio کے ذریعے فولڈایبل ڈیوائس ایمولیٹر پر یا Galaxy Z Fold جیسے طبعی آلات پر کی جاتی ہے۔
  • نظرانداز تسلسل کو نظرانداز کرنا اسکرین حالت کی کمی، فارم ڈیٹا ری سیٹ اور صارف کے تجربے میں تنزلی کا سبب بنتا ہے۔

Screen Continuity کیا ہے؟

Screen Continuity ایک اینڈرائیڈ میکانزم ہے جو فولڈایبل ڈیوائسز پر اسکرین کی طبعی تشکیل تبدیل ہونے پر Activity حالت محفوظ رکھتا ہے۔ جب صارف فون کھولتا یا موڑتا ہے، سسٹم نئی ونڈو جہتوں کے ساتھ Activity کو دوبارہ شروع کر سکتا ہے۔ تسلسل داخل کردہ ڈیٹا، اسکرول پوزیشن اور موجودہ اسکرین کے ضیاع کو روکتا ہے۔

عام اسکرین گردش کے برعکس جہاں اینڈرائیڈ صرف نئی سمت کے ساتھ Activity کو دوبارہ بناتا ہے، فولڈایبل ڈیوائسز بنیادی طور پر نئے منظرنامے متعارف کراتی ہیں۔ HALF_OPENED پوزچر ایپ کو آدھی اسکرین پر کام کرنے دیتی ہے، جبکہ FLAT مکمل طور پر کھلے ٹیبلٹ موڈ میں کام کرتی ہے۔ Screen Continuity سپورٹ کے بغیر، ہر پوزچر تبدیلی انٹرفیس کو اس کی ابتدائی حالت پر ری سیٹ کر دیتی ہے۔

Google I/O 2024 کے مطابق، 62% سے زیادہ فولڈایبل ڈیوائس صارفین نے ایسی ایپس دیکھی ہیں جو حالت کی تبدیلی کو غلط طریقے سے ہینڈل کرتی ہیں۔ Screen Continuity API سطح پر اس مسئلے کو حل کرتا ہے، ڈویلپر کو UI کو محفوظ اور بحال کرنے کے لیے تیار آلات فراہم کرتا ہے۔

فولڈایبل ڈیوائس کی حالتیں: اسکرین پوزچرز

Jetpack WindowManager FoldingFeature کلاس کے ذریعے فولڈایبل ڈیوائسز کے لیے تین بنیادی پوزچرز کی وضاحت کرتا ہے۔ ہر پوزچر قبضے کی ایک مخصوص طبعی پوزیشن سے مطابقت رکھتا ہے اور خصوصی انٹرفیس ہینڈلنگ کی ضرورت ہوتی ہے۔

HALF_OPENED — آدھی موڑی ہوئی حالت

ڈیوائس 30 سے 160 ڈگری کے زاویے پر ہوتی ہے۔ اسکرین دو منطقی حصوں میں تقسیم ہوتی ہے۔ ایپ اوپری حصے میں مواد اور نچلے حصے میں کنٹرول دکھا سکتی ہے۔ ویڈیو کالز اور میڈیا پلیئرز کے لیے ٹیبل ٹاپ موڈ اس پوزچر کو استعمال کرتا ہے۔

FLAT — مکمل طور پر کھلی ہوئی حالت

ڈیوائس 180 ڈگری پر کھلی ہوتی ہے، ایک بڑی اسکرین بناتی ہے۔ ایپ وسیع کام کی جگہ کے ساتھ ٹیبلٹ موڈ میں تبدیل ہو جاتی ہے۔ اس پوزچر میں، نیویگیشن پینل اور تفصیلی مواد کے ساتھ ملٹی پین لے آؤٹ دکھانے کی سفارش کی جاتی ہے۔

TABLE_TOP — لیپ ٹاپ پوزچر

ڈیوائس تقریباً 120 ڈگری کے زاویے پر سطح پر کھڑی ہوتی ہے۔ اسکرین کا نچلا آدھا حصہ ٹچ پینل یا کی بورڈ کے طور پر کام کرتا ہے۔ اس پوزچر میں ٹچ پیڈ موڈ اسکرین کے نچلے حصے پر ٹریک پیڈ کا تخیل کرنے کی اجازت دیتا ہے۔

اینڈرائیڈ میں اسکرین تسلسل کیسے کام کرتا ہے؟

اینڈرائیڈ فولڈایبل ڈیوائس تشکیل کی تبدیلیوں کو configuration changes میکانزم کے ذریعے ہینڈل کرتا ہے۔ جب صارف فون کھولتا ہے، سسٹم ونڈو کے سائز کی تبدیلی کا پتہ لگاتا ہے اور معیاری Activity دوبارہ تخلیق سائیکل شروع کرتا ہے۔ Screen Continuity اس عمل کو روکتا ہے اور اہم ڈیٹا محفوظ کرتا ہے۔

حالت محفوظ کرنے کا اہم طریقہ onRetainNonConfigurationInstance ہے، جو Activity کو تباہ کرنے سے پہلے بلایا جاتا ہے۔ ڈویلپر اس میں ڈیٹا ماڈل، فہرست کی پوزیشن اور موجودہ نیویگیشن اسکرین محفوظ کرتا ہے۔ دوبارہ تخلیق کے بعد، Activity getLastNonConfigurationInstance کے ذریعے یہ ڈیٹا حاصل کرتی ہے اور UI کو بالکل موڑنے سے پہلے جیسی بحال کرتی ہے۔

Fragments کے لیے، میکانزم setRetainInstance(true) کے ذریعے لاگو کیا جاتا ہے، جو تشکیل کی تبدیلیوں پر fragment کو تباہ ہونے سے روکتا ہے۔ Jetpack Compose میں rememberSaveable استعمال ہوتا ہے، جو Window Metrics تبدیل ہونے پر خود بخود حالت محفوظ کرتا ہے۔

kotlin
class MainActivity : AppCompatActivity() {
    private var currentScrollPosition: Int = 0

    override fun onRetainNonConfigurationInstance(): Any {
        return SavedState(scrollPosition = currentScrollPosition)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val saved = lastNonConfigurationInstance as? SavedState
        saved?.let { currentScrollPosition = it.scrollPosition }
    }
}

Jetpack WindowManager میں ScreenContinuity API

Jetpack WindowManager ورژن 1.1+ میں ScreenContinuityController کلاس شامل ہے، جو اسکرین تسلسل کو منظم کرنے کے لیے تیار میکانزم فراہم کرتی ہے۔ API خود بخود پوزچر تبدیلیوں کو ہینڈل کرتا ہے اور کال بیک انٹرفیس کے ذریعے ایپ کو مطلع کرتا ہے۔

ScreenContinuityController

مرکزی کلاس جو پوزچر تبدیلی سننے والوں کو رجسٹر کرتی ہے۔ registerContinuityListener ایک کال بیک قبول کرتا ہے جو فولڈایبل ڈیوائس حالتوں کے درمیان ہر منتقلی پر چالو ہوتا ہے۔ کنٹرولر getCurrentFoldingFeature طریقہ کے ذریعے موجودہ پوزچر کے بارے میں معلومات بھی فراہم کرتا ہے۔

FoldingFeatureAdapter

FoldingFeature ڈیٹا کو ایپ کے لیے قابل مطالعہ حالتوں میں تبدیل کرنے کے لیے ایک افادیتی کلاس۔ FoldingFeatureAdapter قبضے کے کوآرڈینیٹ کو معمول بناتا ہے اور تعین کرتا ہے کہ موجودہ پوزچر HALF_OPENED، FLAT یا TABLE_TOP ہے۔ یہ ڈویلپر کو دستی زاویہ اور حد کی گنتی سے بچاتا ہے۔

Jetpack Compose کے ساتھ انضمام

Compose ایپس کے لیے، WindowManager WindowSizeClass اور موڈیفائر فراہم کرتا ہے جو موڑ کو مدنظر رکھتے ہیں۔ BoxWithConstraints جزو Activity کی دوبارہ تخلیق کے بغیر حقیقی وقت میں اسکرین کے سائز کی تبدیلیوں کے مطابق ڈھل جاتا ہے۔ Compose خود بخود WindowMetrics تبدیل ہونے پر دوبارہ تشکیل کو متحرک کرتا ہے۔

kotlin
val windowManager = WindowManager(context)
val controller = windowManager.screenContinuityController

controller.registerContinuityListener { feature: FoldingFeature ->
    when (feature.state) {
        FoldingFeature.State.HALF_OPENED -> enterTabletopMode()
        FoldingFeature.State.FLAT -> expandToTablet()
    }
}

Kotlin میں نفاذ کی مثال

Screen Continuity سپورٹ کے ساتھ ایک مکمل Activity مثال دیکھتے ہیں۔ MainActivity تین منظرناموں کو ہینڈل کرتا ہے: موڑنا، کھولنا اور آدھی موڑی ہوئی حالت۔ ڈیٹا onRetainNonConfigurationInstance کے ذریعے محفوظ کیا جاتا ہے اور دوبارہ تخلیق پر بحال کیا جاتا ہے۔

kotlin
class ContinuityActivity : AppCompatActivity() {
    private lateinit var binding: ActivityContinuityBinding
    private var itemList = mutableListOf<String>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityContinuityBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val savedState = lastNonConfigurationInstance as? ContinuityState
        if (savedState != null) {
            itemList.addAll(savedState.items)
            restoreUi(savedState)
        }
        setupWindowManager()
    }

    private fun setupWindowManager() {
        val controller = WindowManager(this).screenContinuityController
        controller.registerContinuityListener { feature ->
            updateLayoutForFeature(feature)
        }
    }

    private fun updateLayoutForFeature(feature: FoldingFeature) {
        when (feature.state) {
            FoldingFeature.State.HALF_OPENED -> binding.root.enableTabletopMode()
            FoldingFeature.State.FLAT -> binding.root.enableTabletMode()
            FoldingFeature.State.TABLE_TOP -> binding.root.enableTouchpadMode()
        }
    }

    override fun onRetainNonConfigurationInstance(): Any {
        return ContinuityState(itemList.toList(), binding.listView.firstVisiblePosition)
    }
}

data class ContinuityState(
    val items: List<String>,
    val scrollPosition: Int
)

اہم عنصر ContinuityState کلاس ہے، جو آئٹم کی فہرست اور اسکرول پوزیشن محفوظ کرتی ہے۔ Activity اسے دوبارہ تخلیق سے پہلے محفوظ کرتی ہے اور onCreate کال کرنے کے فوراً بعد بحال کرتی ہے۔ WindowManager کنٹرولر پوزچر تبدیلیوں کو سبسکرائب کرتا ہے اور موڈز کے درمیان لے آؤٹ تبدیل کرتا ہے۔

ایمولیٹر اور ڈیوائس پر تسلسل کی جانچ

Android Studio تینوں پوزچرز کے سپورٹ کے ساتھ ایک فولڈایبل ڈیوائس ایمولیٹر فراہم کرتا ہے۔ Screen Continuity جانچنے کے لیے، Pixel Fold یا Samsung Galaxy Z Fold قسم کا ایک ورچوئل ڈیوائس بنائیں اور ایمولیٹر کنٹرول پینل کے ذریعے پوزچرز تبدیل کریں۔

ایمولیٹر سیٹ اپ

Foldable زمرے کے ساتھ AVD بنائیں اور 7.6 انچ اسکرین ریزولوشن منتخب کریں۔ ایمولیٹر کے توسیعی کنٹرولز میں، Folding Postures ٹیب کھولیں اور پوزچرز کے درمیان سوئچ کریں۔ ہر سوئچ ایک configuration change کو متحرک کرتا ہے جسے ایپ کو صحیح طریقے سے ہینڈل کرنا چاہیے۔

طبعی ڈیوائس

حقیقی ڈیوائس (Galaxy Z Fold 5, Pixel Fold) پر، جانچ طبعی طور پر موڑ کر اور کھول کر کی جاتی ہے۔ Samsung DeX اور Multi-Window موڈز بھی تسلسل کو فعال کرتے ہیں۔ ڈیبگنگ کے لیے، ADB کمانڈ adb shell dumpsys window policy استعمال کریں، جو موجودہ موڑ کی حالت دکھاتا ہے۔

عام مسائل

بنیادی غلطیوں میں RecyclerView حالت کا نقصان، ٹیکسٹ فیلڈ کے مواد کا ری سیٹ اور ڈائیلاگ ونڈوز کا بند ہونا شامل ہیں۔ ViewModel Activity لائف سائیکل سے آزاد طور پر میموری میں ڈیٹا رکھ کر ان مسائل کو حل کرتا ہے۔ اگر ایپ دستی طور پر تبدیلیوں کو ہینڈل کرتی ہے تو مینی فیسٹ میں Activity کو android:configChanges پیرامیٹر کے ساتھ تشریح کرنا بھی اہم ہے۔

xml
<!-- AndroidManifest.xml -->
@android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"

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

Screen Continuity عام حالت محفوظ کرنے سے کیسے مختلف ہے؟

Screen Continuity صرف گردش کے دوران نہیں بلکہ اسکرین کے سائز کی طبعی تبدیلیوں کے دوران حالت محفوظ کرتا ہے۔ عام onSaveInstanceState فولڈایبل ڈیوائس پوزچرز تبدیل کرتے وقت حالت کے تحفظ کی ضمانت نہیں دیتا، جبکہ ScreenContinuityController اس مخصوص منظر نامے کو ہینڈل کرتا ہے۔

کون سے اینڈرائیڈ ڈیوائسز Screen Continuity کو سپورٹ کرتی ہیں؟

Android 10+ اور Google Play Services والے تمام فولڈایبل ڈیوائسز۔ سپورٹ Pixel Fold، Galaxy Z Fold سیریز، Huawei Mate X، Oppo Find N اور OnePlus Open میں شامل ہے۔ Jetpack WindowManager ورژن 1.1 یا اس سے اوپر درکار ہے۔

Screen Continuity Jetpack Compose کے ساتھ کیسے کام کرتا ہے؟

Jetpack Compose rememberSaveable اور WindowSizeClass کے ذریعے Screen Continuity کو سپورٹ کرتا ہے۔ ترکیب خود بخود WindowMetrics تبدیلیوں کا جواب دیتی ہے، اور rememberSaveable دوبارہ تشکیل کے درمیان حالت محفوظ رکھتا ہے۔ onSizeChanged موڈیفائر حقیقی وقت میں سائز کی تبدیلیوں کو ٹریک کرنے کی اجازت دیتا ہے۔

اگر Screen Continuity لاگو نہ کیا جائے تو کیا ہوتا ہے؟

جب ڈیوائس کھولی یا موڑی جاتی ہے، Activity حالت محفوظ کیے بغیر دوبارہ بنائی جاتی ہے۔ صارف داخل کردہ ڈیٹا کھو دیتا ہے، اسکرول ری سیٹ ہو جاتا ہے اور کھلے ہوئے ڈائیلاگ بند ہو جاتے ہیں۔ اس سے Google Play پر منفی جائزے اور ایپ کی درجہ بندی میں کمی آتی ہے۔

طبعی ڈیوائس کے بغیر Screen Continuity کیسے جانچیں؟

Android Emulator فولڈایبل ڈیوائس سمولیشن کو سپورٹ کرتا ہے۔ Pixel Fold قسم کا AVD بنائیں، Extended Controls کھولیں اور Folding Postures ٹیب منتخب کریں۔ پوزچرز تبدیل کرنے سے configuration change متحرک ہوتا ہے، جس سے طبعی ڈیوائس کے بغیر حالت کے تحفظ کی جانچ ممکن ہوتی ہے۔

خلاصہ

  • Screen Continuity — فولڈایبل ڈیوائس کی طبعی تشکیل تبدیل ہونے پر Activity حالت محفوظ رکھنے کا اینڈرائیڈ میکانزم۔
  • Jetpack WindowManager HALF_OPENED، FLAT اور TABLE_TOP پوزچرز کو ٹریک کرنے کے لیے ScreenContinuityController فراہم کرتا ہے۔
  • onRetainNonConfigurationInstance — کھولنے پر Activity دوبارہ تخلیق سے پہلے ڈیٹا محفوظ کرنے کا بنیادی طریقہ۔
  • ViewModel اور Compose میں rememberSaveable دستی لائف سائیکل نظم و نسق کے بغیر حالت کے نقصان کو حل کرتے ہیں۔
  • Android Studio Emulator طبعی ڈیوائس کے بغیر تمام فولڈایبل ڈیوائس پوزچرز کی جانچ کی اجازت دیتا ہے۔
  • نظرانداز Screen Continuity کو نظرانداز کرنا موڑنے پر UI ری سیٹ اور داخل کردہ ڈیٹا کے نقصان کا سبب بنتا ہے۔
  • سفارش کی جاتی ہے فولڈایبل ڈیوائسز اور ٹیبلٹس کو نشانہ بنانے والی تمام ایپس میں تسلسل کی سپورٹ شامل کرنے کی سفارش کی جاتی ہے۔

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

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

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

مزید پڑھیں