ফোরগ্রাউন্ড এবং ব্যাকগ্রাউন্ড ইউজার সিস্টেম হ্যান্ডলিং

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

অ্যান্ড্রয়েড 10 দিয়ে শুরু করে, অ্যান্ড্রয়েড অটোমোটিভের একটি ডিফল্ট কনফিগারেশন রয়েছে যা সর্বোচ্চ তিনজন ব্যবহারকারীকে একবারে চালানোর অনুমতি দেয় ( config_multiuserMaxRunningUsers )। অতএব, হেডলেস সিস্টেম ব্যবহারকারী (ব্যবহারকারী 0) ছাড়াও শুধুমাত্র একজন অগ্রভাগ ব্যবহারকারী এবং একটি ব্যাকগ্রাউন্ড ব্যবহারকারী কনফিগার করা যেতে পারে।

  • সাধারণ পরিস্থিতিতে, বর্তমান ব্যবহারকারী ফোরগ্রাউন্ডে চলে এবং হেডলেস সিস্টেম ব্যবহারকারী (User 0) ব্যাকগ্রাউন্ডে চলে। যখন একজন ব্যবহারকারীকে ব্যাকগ্রাউন্ডে সরানো হয়, তখন ব্যবহারকারীকে থামানো হয় কিন্তু লক করা হয় না। যখন সর্বাধিক সংখ্যক ব্যবহারকারী পূরণ করা হয়, তখন সর্বনিম্ন ব্যবহৃত ব্যাকগ্রাউন্ড ব্যবহারকারীকে থামানো হয় এবং লক করা হয় ( config_multiuserDelayUserDataLocking )।
  • থামানো এবং আনলক করা ব্যাকগ্রাউন্ড ব্যবহারকারীদের গ্যারেজ মোডের সময় পুনরায় চালু করা হয়।

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

ব্যাকগ্রাউন্ড ইউজার প্রসেস

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

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

ব্যবহারকারীর অবস্থা

ব্যবহারকারী শুরু না হওয়া পর্যন্ত একজন ব্যবহারকারী একটি থেমে থাকা অবস্থায় থাকে ( STATE_SHUTDOWN )৷ যদি কোনো ব্যবহারকারীর শংসাপত্র (যেমন একটি পিন) সেট করা থাকে, তাহলে Android ব্যবহারকারী চলে কিন্তু লক থাকে ( STATE_RUNNING_LOCKED ) যতক্ষণ না কোনো ব্যক্তি সেই ব্যবহারকারীর জন্য লকস্ক্রিন আনলক করে। যখন ব্যবহারকারী আনলক করা হয়, তখন তাদের শংসাপত্র এনক্রিপ্ট করা স্টোরেজ ডিক্রিপ্ট করা হয় এবং সেই ব্যবহারকারীর জন্য ডেটা ডিরেক্টরিগুলি উপলব্ধ হয়৷ সাধারণ ব্যবহারকারীর স্যুইচিংয়ের জন্য, ব্যাকগ্রাউন্ড ব্যবহারকারীকে থামানো হয় না এবং চালু থাকে এবং আনলক করা থাকে ( STATE_RUNNING_UNLOCKED ), একবার আনলক হয়ে গেলে।

গ্যারেজ মোড, কাজের সময়সূচী এবং ব্যবহারকারীদের জন্য অ্যাপ আপডেট

অটোমোটিভ অ্যাপ্লিকেশানগুলির ডেটা আপডেট করার জন্য প্রস্তাবিত কৌশল হল যখন কোনও ডিভাইস নিষ্ক্রিয় অবস্থায় থাকে তখন কাজগুলি চালানোর জন্য কাজের সময় নির্ধারণ করতে JobScheduler ব্যবহার করে, গ্যারেজ মোডের মাধ্যমে (উদাহরণস্বরূপ, Google Play থেকে অ্যাপ আপডেট ডাউনলোড করা)৷ অ্যাপগুলি JobScheduler এবং JobSchedulerService সাথে চাকরি নিবন্ধন করার পরে, সম্ভব হলে কাজগুলি চালানো হয়৷

যখন অটোমোটিভ ডিভাইস গ্যারেজ মোডের মাধ্যমে নিষ্ক্রিয় থাকে তখন কারসার্ভিস JobSchedulerService এ একটি সংকেত পাঠায়। JobSchedulerService একটি ব্যাকগ্রাউন্ড ব্যবহারকারীর জন্য কাজ চালানোর জন্য, সেই ব্যবহারকারীকে STATE_RUNNING_UNLOCKED অবস্থায় থাকতে হবে। JobSchedulerService এ সারিবদ্ধ চাকরিগুলি টিকে থাকে এবং পাওয়ার চক্র জুড়ে টিকে থাকে।

JobScheduler একটি নির্দিষ্ট ব্যবহারকারীর জন্য কাজ চালাতে পারে না যদি ব্যবহারকারী একটি পাওয়ার চক্রের পরে কখনও আনলক না হয়। যাইহোক, যখন ব্যবহারকারী আনলক থাকে, এবং ব্যবহারকারী যদি STATE_RUNNING_UNLOCKED এ থেকে যায়, ব্যবহারকারীর জন্য কাজ চালানো যেতে পারে।