বিলিয়ন জন্য সংযোগ

বিশ্বব্যাপী অর্ধেকেরও বেশি ব্যবহারকারী আপনার অ্যাপটি 2G সংযোগের মাধ্যমে অনুভব করবেন। তাদের অভিজ্ঞতা উন্নত করতে, কম-গতির সংযোগের জন্য অপ্টিমাইজ করুন এবং সর্বোত্তম পারফরম্যান্সের জন্য ডেটা সঞ্চয় করে, সারিবদ্ধ অনুরোধগুলি এবং চিত্রগুলি পরিচালনা করে অফলাইনে কাজ করুন৷

এখানে আপনি কিভাবে এই জিনিসগুলি সম্পন্ন করতে কিছু টিপস পেতে পারেন.

ইমেজ অপ্টিমাইজ করুন

ছবি ডাউনলোড করা সহজ করার জন্য অনেক উপায় আছে। এর মধ্যে রয়েছে WebP চিত্র পরিবেশন, গতিশীলভাবে চিত্রের আকার দেওয়া এবং চিত্র-লোডিং লাইব্রেরি ব্যবহার করা।

WebP ছবি পরিবেশন করুন

  • ছবি লোডের সময় কমাতে এবং নেটওয়ার্ক ব্যান্ডউইথ সংরক্ষণ করতে নেটওয়ার্কে WebP ফাইলগুলি পরিবেশন করুন৷ একটি WebP ফাইল প্রায়ই তার PNG এবং JPG সমকক্ষের তুলনায় আকারে ছোট হয়, অন্তত একই ছবির গুণমান সহ। এমনকি ক্ষতিকারক সেটিংস ব্যবহার করেও, ওয়েবপি আসলটির সাথে প্রায় অভিন্ন চিত্র তৈরি করতে পারে। Android 4.0 (API স্তর 14: আইসক্রিম স্যান্ডউইচ) থেকে ক্ষতিকর WebP সমর্থন এবং Android 4.2 (API স্তর 17: Jelly Bean) থেকে ক্ষতিহীন, স্বচ্ছ ওয়েবপি-এর জন্য সমর্থন অন্তর্ভুক্ত করেছে।

গতিশীল আকারের ছবি

  • ডিভাইসের স্পেসিফিকেশনের উপর ভিত্তি করে আপনার অ্যাপগুলিকে টার্গেট রেন্ডারিং সাইজে ইমেজ অনুরোধ করতে বলুন এবং আপনার সার্ভার যথাযথ আকারের ছবি প্রদান করে। এটি করা নেটওয়ার্কের মাধ্যমে প্রেরিত ডেটা কমিয়ে দেয় এবং প্রতিটি ছবি ধরে রাখার জন্য প্রয়োজনীয় মেমরির পরিমাণ হ্রাস করে, যার ফলে উন্নত কর্মক্ষমতা এবং ব্যবহারকারীর সন্তুষ্টি হয়।
  • যখন ব্যবহারকারীদের ছবি ডাউনলোড করার জন্য অপেক্ষা করতে হয় তখন ব্যবহারকারীর অভিজ্ঞতা কমে যায়। উপযুক্ত চিত্রের আকার ব্যবহার করা এই সমস্যাগুলি সমাধান করতে সহায়তা করে। নেটওয়ার্কের ধরন বা নেটওয়ার্ক মানের উপর ভিত্তি করে ছবির আকারের অনুরোধগুলি করার কথা বিবেচনা করুন; এই আকার টার্গেট রেন্ডারিং আকারের চেয়ে ছোট হতে পারে।
  • গতিশীল স্থানধারক যেমন প্রাক-গণনা করা প্যালেট মান বা কম-রেজোলিউশন থাম্বনেইলগুলি চিত্রটি আনার সময় ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারে।

ইমেজ লোডিং লাইব্রেরি ব্যবহার করুন

  • আপনার অ্যাপের কোনো ছবি একবারের বেশি আনা উচিত নয়। ইমেজ লোডিং লাইব্রেরি যেমন গ্লাইড এবং পিকাসো ইমেজ আনয়ন করে, ক্যাশে করে এবং আপনার ভিউতে হুক প্রদান করে যাতে প্রকৃত ছবিগুলো প্রস্তুত না হওয়া পর্যন্ত প্লেসহোল্ডার ইমেজ দেখাতে পারে। যেহেতু ছবিগুলি ক্যাশে করা হয়, এই লাইব্রেরিগুলি পরের বার যখন কোনও চিত্রের অনুরোধ করা হয় তখন স্থানীয় কপি ফেরত দেয়৷
  • ইমেজ-লোডিং লাইব্রেরিগুলি তাদের ক্যাশে পরিচালনা করে, সাম্প্রতিক চিত্রগুলি ধরে রাখে যাতে আপনার অ্যাপ স্টোরেজ অনির্দিষ্টকালের জন্য বৃদ্ধি না পায়।

নেটওয়ার্কিং অপ্টিমাইজ করুন

আপনি একটি সর্বোত্তম নেটওয়ার্ক অভিজ্ঞতা প্রদান করে ব্যবহারকারীর অভিজ্ঞতা বাড়াতে পারেন। উদাহরণস্বরূপ, আপনি আপনার অ্যাপটিকে অফলাইনে ব্যবহারযোগ্য করে তুলতে পারেন, WorkManager এবং Room ব্যবহার করতে পারেন এবং নেটওয়ার্ক অনুরোধগুলিকে ডিডপ্লিকেট করতে পারেন৷

আপনার অ্যাপটিকে অফলাইনে ব্যবহারযোগ্য করুন

  • গ্রামীণ অবস্থানে এবং কম সমৃদ্ধ এলাকায়, ডিভাইসগুলির নেটওয়ার্ক সংযোগ হারানো সাধারণ। একটি দরকারী অফলাইন অবস্থা তৈরি করার অর্থ হল ব্যবহারকারীরা সর্বদা আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে পারে৷ সংযোগ পুনরুদ্ধার করা হলে স্থানীয়ভাবে ডেটা সংরক্ষণ করে, ডেটা ক্যাশে করে এবং আউটবাউন্ড অনুরোধগুলিকে সারিবদ্ধ করে এটি করুন৷
  • যেখানে সম্ভব, অ্যাপের ব্যবহারকারীদের জানানো উচিত নয় যে সংযোগ হারিয়ে গেছে। এটি শুধুমাত্র যখন ব্যবহারকারী একটি অপারেশন সম্পাদন করে যেখানে সংযোগ অপরিহার্য যে ব্যবহারকারীকে অবহিত করা প্রয়োজন৷
  • যখন কোনও ডিভাইসে সংযোগের অভাব থাকে, তখন আপনার অ্যাপের নেটওয়ার্ক অনুরোধগুলি ব্যাচ করা উচিত—ব্যবহারকারীর পক্ষ থেকে—যা সংযোগ পুনরুদ্ধার করা হলে তা কার্যকর করা যেতে পারে। এর একটি উদাহরণ হল একটি ইমেল ক্লায়েন্ট যা ব্যবহারকারীদের ডিভাইসটি অফলাইনে থাকা অবস্থায়ও বিদ্যমান মেলগুলি রচনা, পাঠাতে, পড়তে, সরাতে এবং মুছতে দেয়৷ সংযোগ পুনরুদ্ধার করা হলে এই ক্রিয়াকলাপগুলি ক্যাশে করা এবং কার্যকর করা যেতে পারে। এটি করার মাধ্যমে, অ্যাপটি ডিভাইসটি অনলাইন বা অফলাইনে একই রকম ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে সক্ষম।

ডেটা আনতে এবং ক্যাশে করতে রুম ব্যবহার করুন

  • নিশ্চিত করুন যে আপনার অ্যাপটি একটি ডাটাবেস বা অনুরূপ কাঠামো ব্যবহার করে ডিস্কে সমস্ত ডেটা সঞ্চয় করে যাতে এটি নেটওয়ার্কের অবস্থা নির্বিশেষে সর্বোত্তমভাবে কাজ করে। একটি স্থানীয় ডাটাবেসে ডেটা ক্যাশে করতে রুম পারসিসটেন্স লাইব্রেরি ব্যবহার করুন এবং ডিভাইসটির নেটওয়ার্ক সংযোগ থাকলে সেই ক্যাশে আপডেট করতে WorkManager ব্যবহার করুন।
  • অ্যাপ্লিকেশানগুলিকে নেটওয়ার্ক থেকে আনা সামগ্রী ক্যাশে করা উচিত৷ পরবর্তী অনুরোধ করার আগে, অ্যাপগুলিকে স্থানীয়ভাবে ক্যাশে করা ডেটা প্রদর্শন করা উচিত। এটি নিশ্চিত করে যে ডিভাইসটি অফলাইনে থাকুক বা ধীর বা অবিশ্বস্ত নেটওয়ার্কে থাকুক না কেন অ্যাপটি কার্যকরী।

ডিডুপ্লিকেট নেটওয়ার্ক অনুরোধ

  • একটি অফলাইন-প্রথম আর্কিটেকচার প্রাথমিকভাবে স্থানীয় স্টোরেজ থেকে ডেটা আনার চেষ্টা করে এবং তা ব্যর্থ হলে, নেটওয়ার্ক থেকে ডেটার অনুরোধ করে। নেটওয়ার্ক থেকে পুনরুদ্ধার করার পরে, ভবিষ্যতে পুনরুদ্ধারের জন্য ডেটা স্থানীয়ভাবে ক্যাশে করা হয়। এটি নিশ্চিত করতে সাহায্য করে যে একই টুকরো ডেটার জন্য নেটওয়ার্ক অনুরোধগুলি শুধুমাত্র একবারই ঘটে — পরবর্তী অনুরোধগুলি স্থানীয়ভাবে সন্তুষ্ট হয়। এটি অর্জন করতে, দীর্ঘস্থায়ী ডেটার জন্য একটি স্থানীয় ডাটাবেস ব্যবহার করুন (সাধারণত android.database.sqlite বা SharedPreferences )।
  • এই আর্কিটেকচারটি অফলাইন এবং অনলাইন স্টেটের মধ্যে একটি অ্যাপের প্রবাহকে সহজ করে তোলে কারণ একপাশে নেটওয়ার্ক থেকে ক্যাশে নিয়ে আসে, অন্যটি ব্যবহারকারীর কাছে উপস্থাপন করার জন্য ক্যাশে থেকে ডেটা পুনরুদ্ধার করে।
  • ট্রানজিটরি ডেটার জন্য, একটি বাউন্ডেড ডিস্ক ক্যাশে ব্যবহার করুন যেমন একটি DiskLruCache । যে ডেটা সাধারণত পরিবর্তন হয় না তা শুধুমাত্র একবার নেটওয়ার্কের মাধ্যমে অনুরোধ করা উচিত এবং ভবিষ্যতে ব্যবহারের জন্য ক্যাশে করা উচিত। এই ধরনের তথ্যের উদাহরণ হল ছবি এবং অস্থায়ী নথি যেমন সংবাদ নিবন্ধ বা সামাজিক পোস্ট।

ফাইন-টিউন ডেটা স্থানান্তর

আরও ভাল ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য আপনার অ্যাপ নেটওয়ার্ক অবস্থার সাথে খাপ খাইয়ে নিতে পারে এমন বিভিন্ন উপায় রয়েছে৷ উদাহরণস্বরূপ, এটি তথ্যের জন্য ব্যবহারকারীর অপেক্ষার সময় কমানোর জন্য নেটওয়ার্ক অনুরোধগুলিকে অগ্রাধিকার দিতে পারে। এটি ধীর নেটওয়ার্ক গতি এবং নেটওয়ার্ক সংযোগে ঘটতে পারে এমন পরিবর্তনগুলি সনাক্ত করতে এবং মানিয়ে নিতে পারে।

ব্যান্ডউইথকে অগ্রাধিকার দিন

  • আপনার মনে করা উচিত নয় যে ডিভাইসটি যে নেটওয়ার্কের সাথে সংযুক্ত তা দীর্ঘস্থায়ী বা নির্ভরযোগ্য। এই কারণে, অ্যাপগুলিকে যত তাড়াতাড়ি সম্ভব ব্যবহারকারীর কাছে সবচেয়ে দরকারী তথ্য প্রদর্শন করার জন্য নেটওয়ার্ক অনুরোধগুলিকে অগ্রাধিকার দেওয়া উচিত।
  • ব্যবহারকারীদের কাছে দৃশ্যমান এবং প্রাসঙ্গিক তথ্য অবিলম্বে উপস্থাপন করা তাদের তথ্যের জন্য অপেক্ষা করার চেয়ে একটি ভাল ব্যবহারকারীর অভিজ্ঞতা যা প্রয়োজন নাও হতে পারে। এটি ব্যবহারকারীর অপেক্ষা করার সময়কে হ্রাস করে এবং ধীর নেটওয়ার্কে অ্যাপটির উপযোগিতা বাড়ায়।
  • এটি অর্জন করতে, আপনার নেটওয়ার্ক অনুরোধগুলিকে এমনভাবে ক্রম করুন যাতে পাঠ্যটি সমৃদ্ধ মিডিয়ার আগে আনা হয়। পাঠ্য অনুরোধগুলি ছোট হতে থাকে, আরও ভাল সংকুচিত হয় এবং তাই দ্রুত স্থানান্তরিত হয়, যার অর্থ হল আপনার অ্যাপ দ্রুত প্রয়োজনীয় সামগ্রী প্রদর্শন করতে পারে৷ নেটওয়ার্ক অনুরোধগুলি পরিচালনার বিষয়ে আরও তথ্যের জন্য, নেটওয়ার্ক ব্যবহার পরিচালনার বিষয়ে Android প্রশিক্ষণে যান৷

ধীর সংযোগে কম ব্যান্ডউইথ ব্যবহার করুন

  • আপনার অ্যাপের সময়মত ডেটা স্থানান্তর করার ক্ষমতা নেটওয়ার্ক সংযোগের উপর নির্ভর করে। নেটওয়ার্কের গুণমান শনাক্ত করা এবং আপনার অ্যাপ যেভাবে ব্যবহার করে তা সামঞ্জস্য করা একটি চমৎকার ব্যবহারকারীর অভিজ্ঞতা প্রদান করতে সাহায্য করতে পারে।
  • অন্তর্নিহিত নেটওয়ার্ক গুণমান সনাক্ত করতে আপনি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন৷ এই পদ্ধতিগুলি থেকে ডেটা ব্যবহার করে, ব্যবহারকারীর ক্রিয়াকলাপের জন্য একটি সময়মত প্রতিক্রিয়া প্রদান করা চালিয়ে যেতে আপনার অ্যাপের নেটওয়ার্কের ব্যবহারকে উপযোগী করা উচিত:
  • ধীর সংযোগে, শুধুমাত্র নিম্ন-রেজোলিউশন মিডিয়া ডাউনলোড করার কথা বিবেচনা করুন বা সম্ভবত কোনোটিই নয়। এটি নিশ্চিত করে যে আপনার ব্যবহারকারীরা ধীর সংযোগে অ্যাপটি ব্যবহার করতে পারে। যেখানে আপনার কোনো ছবি নেই বা ছবিটি এখনও লোড হচ্ছে, সেখানে আপনাকে সর্বদা একটি স্থানধারক দেখাতে হবে। আপনি প্যালেট লাইব্রেরি ব্যবহার করে একটি গতিশীল স্থানধারক তৈরি করতে পারেন যা লক্ষ্য চিত্রের সাথে মেলে এমন স্থানধারক রঙ তৈরি করতে পারে।
  • Android 7.0 (API লেভেল 24) এবং উচ্চতর দ্বারা চালিত ডিভাইসগুলিতে, ব্যবহারকারীরা ডেটা সেভার সেটিং চালু করতে পারেন, যা ডেটা ব্যবহার কমাতে সাহায্য করে৷ অ্যান্ড্রয়েড 7.0 ডেটা সেভার সেটিংস সনাক্ত করতে ConnectivityManager প্রসারিত করে। এই বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, ডেটা সেভার দেখুন।

নেটওয়ার্ক পরিবর্তনগুলি সনাক্ত করুন, তারপরে অ্যাপের আচরণ পরিবর্তন করুন৷

  • নেটওয়ার্কের মান স্থির নয়; এটি অবস্থান, নেটওয়ার্ক ট্রাফিক এবং স্থানীয় জনসংখ্যার ঘনত্বের উপর ভিত্তি করে পরিবর্তিত হয়। অ্যাপ্লিকেশানগুলিকে নেটওয়ার্কের পরিবর্তনগুলি সনাক্ত করা উচিত এবং সেই অনুযায়ী ব্যান্ডউইথ সামঞ্জস্য করা উচিত৷ এটি করার মাধ্যমে, আপনার অ্যাপ ব্যবহারকারীর অভিজ্ঞতাকে নেটওয়ার্ক মানের সাথে মানানসই করতে পারে। এই পদ্ধতিগুলি ব্যবহার করে নেটওয়ার্ক অবস্থা সনাক্ত করুন:
  • নেটওয়ার্কের মান হ্রাস পাওয়ার সাথে সাথে অনুরোধের সংখ্যা এবং আকার কমিয়ে দিন। সংযোগের গুণমান উন্নত হওয়ার সাথে সাথে আপনি আপনার অনুরোধগুলি সর্বোত্তম স্তরে স্কেল করতে পারেন।
  • উচ্চ মানের, মিটারবিহীন নেটওয়ার্কগুলিতে, এটিকে সময়ের আগে উপলব্ধ করার জন্য ডেটা প্রিফেচ করার কথা বিবেচনা করুন৷ ব্যবহারকারীর অভিজ্ঞতার দৃষ্টিকোণ থেকে, এর অর্থ হতে পারে যে নিউজ রিডার অ্যাপগুলি 2G-তে একবারে তিনটি নিবন্ধ আনে কিন্তু Wi-Fi-এ একবারে বিশটি নিবন্ধ আনে৷ নেটওয়ার্ক পরিবর্তনের উপর ভিত্তি করে অ্যাপ্লিকেশানের আচরণ সামঞ্জস্য করার বিষয়ে আরও তথ্যের জন্য, কানেক্টিভিটি স্থিতি পর্যবেক্ষণের উপর Android প্রশিক্ষণে যান৷
  • নেটওয়ার্ক সংযোগে একটি পরিবর্তন ঘটলে সম্প্রচার CONNECTIVITY_CHANGE পাঠানো হয়৷ যখন আপনার অ্যাপটি ফোরগ্রাউন্ডে থাকে, আপনি এই সম্প্রচারটি পেতে registerReceiver কল করতে পারেন। সম্প্রচার পাওয়ার পর, আপনার বর্তমান নেটওয়ার্ক অবস্থার পুনর্মূল্যায়ন করা উচিত এবং আপনার UI এবং নেটওয়ার্ক ব্যবহার যথাযথভাবে সামঞ্জস্য করা উচিত। আপনার ম্যানিফেস্টে এই রিসিভারটি ঘোষণা করা উচিত নয়, কারণ এটি Android 7.0 (API স্তর 24) এবং উচ্চতর সংস্করণে অনুপলব্ধ৷ অ্যান্ড্রয়েড 7.0-এ এই এবং অন্যান্য পরিবর্তন সম্পর্কে আরও তথ্যের জন্য, Android 7.0 পরিবর্তনগুলি দেখুন।

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

সংযোগের গতির বিভিন্ন সমর্থন সম্পর্কে আরও জানতে, নিম্নলিখিত সংস্থানটি দেখুন:

ব্লগ পোস্ট