এখন আপনার সিঙ্ক অ্যাডাপটর উপাদানের মধ্যে আবদ্ধ ডাটা ট্রান্সফার কোড আছে, কিন্তু আপনাকে আপনার কোডে প্রবেশগম্যতা সহ ফ্রেমওয়ার্ক সরবরাহ করতে হবে। এটা করতে, আপনার একটি বাউন্ড Service তৈরী করা প্রযোজন যা সিঙ্ক অ্যাডাপটর থেকে ফ্রেমওয়ার্কে একটি বিশেষ অ্যান্ড্রয়েড বাইন্ডার অবজেক্ট পাস করে। এই বাইন্ডার অবজেক্ট দিয়ে ফ্রেমওয়ার্ক onPerformSync()পদ্ধতি আহবান করতে পারে এবং ডাটা এটাতে পাস করে।
সার্ভিসের onCreate() পদ্ধতির মধ্যে একটি সিঙ্গেলটোন হিসাবে আপনার সিঙ্ক অ্যাডাপটর উপাদান ইনসটেনসিয়েট করুন। onCreate()এর মধ্যে উপাদান ইনসটেনসিয়েট করার মাধ্যমে, যতক্ষণ সার্ভিস শুরু না হয় আপনি এটা তৈরী করা মূলতবী করতে পারেন, যা ঘটবে যখন ফ্রেমওয়ার্ক আপনার ডাটা ট্রান্সফার প্রধমে রান করার চেষ্টা করে। সিঙ্ক অ্যাডাপটর ফ্রেমওয়ার্কের সক্রিয় করা বা পরিকল্পনা করার জবাবে আপনার সিঙ্ক অ্যাডাপটরের বহুমুখি কর্মসম্পাদন সারিবদ্ধ করার ক্ষেত্রে আপনার একটি থ্রেড-সেফ ম্যানারের মধ্যে উপাদান ইনসটেনসিয়েট করা প্রয়োজন ।
উদাহরণস্বরূপ, নীচের চিত্রটি আপনাকে দেখায় কীভাবে একটি ক্লাস তৈরী করতে হয় যা বাউন্ড সার্ভিস বাস্তবায়ন করে, আপনার সিঙ্ক অ্যাডাপটর উপাদান ইনসটেনসিয়েট করে, এবং অ্যান্ড্রয়েড বাইন্ডার অবজেক্ট লাভ করে:
package com.example.android.syncadapter;
/**
* Define a Service that returns an IBinder for the
* sync adapter class, allowing the sync adapter framework to call
* onPerformSync().
*/
public class SyncService extends Service {
// Storage for an instance of the sync adapter
private static SyncAdapter sSyncAdapter = null;
// Object to use as a thread-safe lock
private static final Object sSyncAdapterLock = new Object();
/*
* Instantiate the sync adapter object.
*/
@Override
public void onCreate() {
/*
* Create the sync adapter as a singleton.
* Set the sync adapter as syncable
* Disallow parallel syncs
*/
synchronized (sSyncAdapterLock) {
if (sSyncAdapter == null) {
sSyncAdapter = new SyncAdapter(getApplicationContext(), true);
}
}
}
/**
* Return an object that allows the system to invoke
* the sync adapter.
*
*/
@Override
public IBinder onBind(Intent intent) {
/*
* Get the object that allows external processes
* to call onPerformSync(). The object is created
* in the base class code when the SyncAdapter
* constructors call super()
*/
return sSyncAdapter.getSyncAdapterBinder();
}
}
নোট: একটি সিঙ্ক অ্যাডাপটরের জন্য একটি বাউন্ডের বিস্তারিত উদাহরনের জন্য উদাহরণ অ্যাপ দেখুন।