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

চাহিদা অনুযায়ী সিঙ্ক অ্যাডডাপটর রান করা

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

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

কিন্তু, যদি আপনি এখনও সিঙ্ক অ্যাডাপটর চাহদিার উপর রান করতে চান, একটি ম্যানুয়েল সিঙ্ক অ্যাডাপটর রান এর জন্য সিঙ্ক অ্যাডাপটর ফ্ল্যাগ সেট করুন, তারপর ContentResolver.requestSync()কল করুন।

নিচের ফ্ল্যাগগুলো দিয়ে চাহিদাকৃত ট্রান্সফারগুলো রান করুন:

SYNC_EXTRAS_MANUAL/সিঙ্ক এক্সট্রাস ম্যানুয়েল

একটি ম্যানুয়েল সিঙ্ক ফোর্স করে (বল প্রয়োগ)। সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্ক বিদ্যমান সেটিংকে এড়িয়ে যায়, যেমন ফ্ল্যাগ setSyncAutomatically()কর্তৃক সেট হয়।

SYNC_EXTRAS_EXPEDITED/ সিঙ্ক এক্সট্রাস এক্সপেকটেড

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

নিচের কোড চিত্রটি আপনাকে দেখায় একটি বাটন ক্লিক করার জবাবে কীভাবে requestSync()কল করতে হয়:

public class MainActivity extends FragmentActivity {
    ...
    // Constants
    // Content provider authority
    public static final String AUTHORITY =
            "com.example.android.datasync.provider"
    // Account type
    public static final String ACCOUNT_TYPE = "com.example.android.datasync";
    // Account
    public static final String ACCOUNT = "default_account";
    // Instance fields
    Account mAccount;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        /*
         * Create the dummy account. The code for CreateSyncAccount
         * is listed in the lesson Creating a Sync Adapter
         */

        mAccount = CreateSyncAccount(this);
        ...
    }
    /**
     * Respond to a button click by calling requestSync(). This is an
     * asynchronous operation.
     *
     * This method is attached to the refresh button in the layout
     * XML file
     *
     * @param v The View associated with the method call,
     * in this case a Button
     */
    public void onRefreshButtonClick(View v) {
        ...
        // Pass the settings flags by inserting them in a bundle
        Bundle settingsBundle = new Bundle();
        settingsBundle.putBoolean(
                ContentResolver.SYNC_EXTRAS_MANUAL, true);
        settingsBundle.putBoolean(
                ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
        /*
         * Request the sync for the default account, authority, and
         * manual sync settings
         */
        ContentResolver.requestSync(mAccount, AUTHORITY, settingsBundle);
    }