বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

আপনার একটিভিটি বন্ধ (স্টপ) করুন

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

যদিও onPause()কে পদ্ধতি onStop()এর পুর্বে কল করা হয়, আরও ভালোভাবে কার্যসম্পাদন করতে, আরও সিপিইউ-ইন্টেনসিভ শাট-ডাউন অপারেশন করতে আপনার onStop()ব্যবহার করা উচিত, যেমন, একটি ডাটাবেজে তথ্য লেখার কাজ করতে।

উদাহরণস্বরূপ, এখানে onStop()এর একটি বাস্তবায়ন দেয়া আছে যা একটি ড্রাফট নোটের কনটেন্ট অনঢ় স্টোরেজে সেভ করে:

@Override
protected void onStop() {
    super.onStop();  // Always call the superclass method first

    // Save the note's current draft, because the activity is stopping
    // and we want to be sure the current note progress isn't lost.
    ContentValues values = new ContentValues();
    values.put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText());
    values.put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle());

    getContentResolver().update(
            mUri,    // The URI for the note to update.
            values,  // The map of column names and new values to apply to them.
            null,    // No SELECT criteria are used.
            null     // No WHERE columns are used.
            );
}

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

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