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

পর্যায়ক্রমে সিঙ্ক অ্যাডডাপটর রান করা যখন

রানের মধ্যে অপেক্ষা করতে বা দিনের একটি সময়ে এটাকে রান করা বা উভয় করার জন্য একটি সময়কাল সেটিং করার মাধ্যমে আপনি পর্যায়ক্রমে আপনার সিঙ্ক অ্যাডাপটর রান করাতে পারেন । পর্যায়ক্রমে আপনার সিঙ্ক অ্যাডাপটর রান করাটা আপনাকে আপনার সার্ভারের হালনাগাদ বিরতি (ইন্টারভ্যাল) মোটামুটিভাবে ম্যাচ করতে দেয়।

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

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

নিয়মিত বিরতিতে আপনার সিঙ্ক অ্যাডাপটর রান করাতে addPeriodicSync()কল করুন। এটা একটি নির্দিষ্ট সময় অতিক্রান্ত হওয়ার পর রান করতে আপনার সিঙ্ক অ্যাডাপটরকে শিডিউল করে। যেহেতু সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্ক অন্য সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্কের কর্মসম্পাদনের জন্য দায়ী এবং ব্যাটারির দক্ষতা বাড়াতে চেষ্টা করে, অতিক্রান্ত সময় কয়েক সেকেন্ডে ভিন্ন হতে পারে। এছাড়াও, ফ্রেমওয়ার্ক আপনার সিঙ্ক অ্যাডাপটর রান করবে না যদি নেটওয়ার্ক না থাকে।

লক্ষ করুন যে addPeriodicSync()দিনের নির্দিষ্ট সময়ে সিঙ্ক অ্যাডাপটর রান করায় না। মোটামুটিভাবে প্রতিদিনের একই সময়ে সিঙ্ক অ্যাডাপটর রান করাতে একটি ট্রিগার হিসাবে একটি পূনারাবৃত্ত করা এলার্ম ব্যবহার করুন। AlarmManager এর রেফারেন্স ডকুমেন্টশনে পূনারাবৃত্ত করা এলার্ম বিষয়ে আরও বিস্তারিতভাবে আলোচনা করা হয়েছে। আপনি যদি দিনের সময়কালীন ট্রিগার সেট করতে পদ্ধতি setInexactRepeating()ব্যবহার করেন যার কিছু বৈচিত্র রয়েছে, আপনার উচিত তখনও শুরুর সময় দৈবচয়ন করা এটা নিশ্চিত করতে যে বিভিন্ন ডিভাইস থেকে রান করা সিঙ্ক অ্যাডাপটর বিস্তৃত হয়।

পদ্ধতি addPeriodicSync(),setSyncAutomatically() কে নিস্ক্রিয় করে না, তাই আপনি অপেক্ষাকৃত কম সময়ে রান করা মাল্টিপল সিঙ্ক পেতে পারেন। এছাড়াও, শুধু কিছু সিঙ্ক অ্যাডাপটর নিয়ন্ত্রণ ফ্ল্যাগস addPeriodicSync()এর প্রতি কলের মধ্যে অনুমোদিত; যে ফ্ল্যাগের অনুমেদন নেই তা addPeriodicSync()এর জন্য রেফারেন্স ডকুমেন্টশনে আলোচনা করা হয়েছে।

নিচের কোড চিত্রটি দেখায় কীভাবে পর্যায়ক্রমিক সিঙ্ক অ্যাডাপটর রানস শিডিউল করতে হয়:

public class MainActivity extends FragmentActivity {
    ...
    // Constants
    // Content provider authority
    public static final String AUTHORITY = "com.example.android.datasync.provider";
    // Account
    public static final String ACCOUNT = "default_account";
    // Sync interval constants
    public static final long MILLISECONDS_PER_SECOND = 1000L;
    public static final long SECONDS_PER_MINUTE = 60L;
    public static final long SYNC_INTERVAL_IN_MINUTES = 60L;
    public static final long SYNC_INTERVAL =
            SYNC_INTERVAL_IN_MINUTES *
            SECONDS_PER_MINUTE *
            MILLISECONDS_PER_SECOND;
    // Global variables
    // A content resolver for accessing the provider
    ContentResolver mResolver;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        // Get the content resolver for your app
        mResolver = getContentResolver();
        /*
         * Turn on periodic syncing
         */
        ContentResolver.addPeriodicSync(
                ACCOUNT,
                AUTHORITY,
                null,
                SYNC_INTERVAL);
        ...
    }
    ...
}