مدیریت وضعیت WebView

WebView یک مؤلفه متداول است که یک سیستم پیشرفته برای مدیریت حالت ارائه می دهد. یک WebView باید وضعیت خود را حفظ کند و موقعیت خود را در سراسر تغییرات پیکربندی حرکت دهد. وقتی کاربر دستگاه را می‌چرخاند یا یک تلفن تاشو باز می‌کند، WebView می‌تواند موقعیت اسکرول را از دست بدهد، که کاربر را مجبور می‌کند دوباره از بالای WebView به موقعیت اسکرول قبلی حرکت کند.

WebView در مدیریت وضعیت خود خوب است. شما می توانید با مدیریت هر چه بیشتر تغییرات پیکربندی برای به حداقل رساندن تعداد دفعات ایجاد مجدد WebView از این کیفیت بهره ببرید. برنامه شما باید تغییرات پیکربندی را انجام دهد زیرا بازآفرینی فعالیت (روش سیستم برای مدیریت تغییرات پیکربندی) WebView دوباره ایجاد می‌کند که باعث از بین رفتن حالت WebView می‌شود.

مدیریت دولت

در طول تغییرات پیکربندی تا حد امکان از بازآفرینی Activity خودداری کنید و اجازه دهید WebView باطل شود تا بتواند با حفظ حالت خود اندازه آن را تغییر دهد.

برای مدیریت وضعیت WebView :

  • تغییرات پیکربندی انجام شده توسط برنامه شما را اعلام کنید
  • حالت WebView را باطل کنید

1. تغییرات پیکربندی را به فایل AndroidManifest.xml برنامه خود اضافه کنید

با مشخص کردن تغییرات پیکربندی که توسط برنامه شما (به جای سیستم) انجام می شود، از فعالیت تفریحی خودداری کنید:

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />

2. هر زمان که برنامه شما تغییری در پیکربندی دریافت کرد، WebView باطل کنید

کاتلین

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.invalidate()
}

جاوا

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    webview.invalidate();
}

این مرحله فقط برای سیستم view اعمال می شود، زیرا Jetpack Compose برای تغییر اندازه عناصر Composable به درستی نیازی به بی اعتبار کردن چیزی ندارد. با این حال، Compose اغلب اگر به درستی مدیریت نشود، یک WebView دوباره ایجاد می کند.

نکات کلیدی

  • android:configChanges : ویژگی عنصر <activity> مانیفست. تغییرات پیکربندی انجام شده توسط فعالیت را فهرست می کند.
  • View#invalidate() : روشی که باعث می‌شود یک view دوباره ترسیم شود. توسط WebView به ارث رسیده است.

نتایج

مؤلفه‌های WebView برنامه شما اکنون وضعیت خود را حفظ کرده و موقعیت خود را در چندین تغییر پیکربندی، از تغییر اندازه گرفته تا تغییر جهت، تا کردن و باز کردن دستگاه حفظ می‌کنند.

مجموعه هایی که حاوی این راهنما هستند

این راهنما بخشی از مجموعه‌های راهنمای Quick Guide است که اهداف توسعه Android گسترده‌تری را پوشش می‌دهد:

برنامه خود را فعال کنید تا از تجربه کاربری بهینه شده در رایانه لوحی، دستگاه‌های تاشو و دستگاه‌های ChromeOS پشتیبانی کند.

سوال یا بازخورد داشته باشید

به صفحه سوالات متداول ما بروید و درباره راهنماهای سریع بیاموزید یا با ما تماس بگیرید و نظرات خود را با ما در میان بگذارید.