যখন একটি নেটওয়ার্ক কানেকশন পাওয়া যায়, অ্যান্ড্রয়েড সিস্টেম ডিভাইসের TCP/IP কানেকশন ওপেন ধরে রাখতে কিছু সেকেন্ড পরপরই একটি মেসেজ পাঠায়। এই মেসেজ প্রতিটা অ্যাপের ContentResolver এ যায়। setSyncAutomatically()কল করার মাধ্যমে, আপনি সিঙ্ক অ্যাডাপটর রান করাতে পারবেন যখনই ContentResolver মেসেজ গ্রহণ করে।
যখন নেটওয়ার্ক মেসেজ পাঠানো হয় তখন আপনার সিঙ্ক অ্যাডাপটর রান করতে শিডিউল করে, আপনি নিশ্চিত করেন যে যখনই নেটওয়ার্ক সহজপ্রাপ্য হয় আপনার সিঙ্ক অ্যাডাপটর সবসময় রান করার জন্য শিডিউল করা থাকে। ডাটা পরিবর্তনের জবাবে আপনাকে একটি ডাটা ট্রান্সফার বল পূর্বক করতে হয় না, কিন্তু আপনি নিশ্চিত করতে চান যে আপনার ডাটা নিয়মিতভাবে আপডেট হয় তখন এই পছন্দ ব্যবহার করুন। একইভাবে, যদি আপনি আপনার সিঙ্ক অ্যাডাপটরের জন্য কোন নির্দিষ্ট শিডিউল না চান, কিন্তু আপনি চান এটা নিয়মিতভাবে রান করুক সেক্ষত্রে এই পছন্দ ব্যবহার করতে পারেন।
যেহেতু পদ্ধতি setSyncAutomatically()টি addPeriodicSync()কে নিস্ক্রিয় করে না, আপনার সিঙ্ক অ্যাডাপটর অল্প সময়ের মধ্যে বারবার সক্রিয় হতে পারে। যদি আপনি আপনার সিঙ্ক অ্যাপটর নিয়মিত শিডিউলে পর্যায়ক্রমে রান করতে চান, আপনার উচিত setSyncAutomatically()নিষ্ক্রয় করা।
নিম্নের কোড চিত্রটি আপনাকে দেখাচ্ছে যে একটি নেটওয়ার্ক মেসেজের জবাবে সিঙ্ক অ্যাডাপটর রান করাতে কীভাবে আপনার ContentResolver কনফিগার করতে হয়:
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";
// 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 automatic syncing for the default account and authority
mResolver.setSyncAutomatically(ACCOUNT, AUTHORITY, true);
...
}
...
}