WebView রাজ্য ব্যবস্থাপনা

তিন তারকা রেটিং আইকন

WebView একটি বহুল ব্যবহৃত কম্পোনেন্ট যা স্টেট ম্যানেজমেন্টের জন্য একটি উন্নত সিস্টেম প্রদান করে। কনফিগারেশন পরিবর্তনের পরেও একটি WebView তার স্টেট এবং স্ক্রল পজিশন বজায় রাখতে হয়। ব্যবহারকারী যখন ডিভাইসটি ঘোরান বা একটি ফোল্ডেবল ফোন খোলেন, তখন WebView তার স্ক্রল পজিশন হারাতে পারে, যার ফলে ব্যবহারকারীকে WebView উপর থেকে পূর্ববর্তী স্ক্রল পজিশনে আবার স্ক্রল করতে হয়।

সর্বোত্তম অনুশীলন

একটি WebView যতবার পুনরায় তৈরি হয়, সেই সংখ্যা কমিয়ে আনুন। WebView তার অবস্থা পরিচালনায় বেশ পারদর্শী, এবং আপনি যত বেশি সম্ভব কনফিগারেশন পরিবর্তন পরিচালনা করার মাধ্যমে এই গুণটির সদ্ব্যবহার করতে পারেন। আপনার অ্যাপকে অবশ্যই কনফিগারেশন পরিবর্তনগুলো সামলাতে হবে, কারণ Activity পুনরায় তৈরি করার সময় (যা কনফিগারেশন পরিবর্তন সামলানোর জন্য সিস্টেমের একটি পদ্ধতি) WebView টিও পুনরায় তৈরি হয়ে যায়, যার ফলে WebView তার অবস্থা হারিয়ে ফেলে।

উপকরণ

  • android:configChanges : ম্যানিফেস্টের <activity> এলিমেন্টের অ্যাট্রিবিউট। অ্যাক্টিভিটি দ্বারা সম্পাদিত কনফিগারেশন পরিবর্তনগুলোর তালিকা এখানে থাকে।
  • View#invalidate() : এই মেথডটি একটি ভিউকে পুনরায় আঁকতে সাহায্য করে। এটি WebView থেকে উত্তরাধিকারসূত্রে প্রাপ্ত।

পদক্ষেপ

WebView অবস্থা সংরক্ষণ করতে, যতটা সম্ভব Activity পুনরায় তৈরি করা এড়িয়ে চলুন, এবং তারপর WebView ইনভ্যালিডেট হতে দিন যাতে এটি তার অবস্থা বজায় রেখে আকার পরিবর্তন করতে পারে।

১. AndroidManifest.xml এ কনফিগারেশন পরিবর্তনগুলো যোগ করুন।

সিস্টেমের পরিবর্তে আপনার অ্যাপ দ্বারা পরিচালিত কনফিগারেশন পরিবর্তনগুলি নির্দিষ্ট করে অ্যাক্টিভিটি পুনরায় তৈরি হওয়া এড়িয়ে চলুন:

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

২. কনফিগারেশন পরিবর্তনের ক্ষেত্রে WebView বাতিল করুন

কোটলিন

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

জাভা

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

এই ধাপটি শুধুমাত্র ভিউ সিস্টেমের জন্য প্রযোজ্য, কারণ Composable এলিমেন্টগুলোর আকার সঠিকভাবে পরিবর্তন করার জন্য জেটপ্যাক কম্পোজকে কোনো কিছু ইনভ্যালিডেট করার প্রয়োজন হয় না। তবে, সঠিকভাবে পরিচালনা করা না হলে কম্পোজ প্রায়শই একটি WebView পুনরায় তৈরি করে। আপনার কম্পোজ অ্যাপে WebView স্টেট সংরক্ষণ এবং পুনরুদ্ধার করতে অ্যাকম্পানিস্ট ওয়েবভিউ র‍্যাপারটি ব্যবহার করুন।

ফলাফল

আপনার অ্যাপের WebView কম্পোনেন্টগুলো এখন আকার পরিবর্তন, ওরিয়েন্টেশন পরিবর্তন, ভাঁজ করা এবং খোলার মতো একাধিক কনফিগারেশন পরিবর্তনের পরেও তাদের অবস্থা এবং স্ক্রোল অবস্থান ধরে রাখে।

অতিরিক্ত সম্পদ

কনফিগারেশন পরিবর্তন এবং সেগুলি কীভাবে পরিচালনা করতে হয় সে সম্পর্কে আরও জানতে, "কনফিগারেশন পরিবর্তন পরিচালনা করুন" দেখুন।