Not: WorkManager'ı öneririz. . Lütfen şu sayfaya bakın: arka plan işleme rehberini inceleyin.
Uygulamanızdaki senkronizasyon bağdaştırıcısı bileşeni, aktarılan görevlerin kodunu içerir sunucu arasındaki verileri kontrol etmektir. Google Play'de sağladığınız planlamaya ve tetikleyicilere senkronizasyon bağdaştırıcısı çerçevesi, senkronizasyon bağdaştırıcısı bileşenindeki kodu çalıştırır. Bir senkronizasyon adaptörü bileşenini uygulamanıza eklemeniz gerekir:
- Senkronizasyon bağdaştırıcısı sınıfı.
- . Veri aktarım kodunuzu senkronizasyon bağdaştırıcısıyla uyumlu bir arayüzde sarmalayan sınıf bahsedeceğim.
-
Service
bağlandı. - . Senkronizasyon bağdaştırıcısı çerçevesinin senkronizasyon bağdaştırıcınızdaki kodu çalıştırmasına olanak tanıyan bir bileşen sınıfını kullanır.
- Senkronizasyon bağdaştırıcısı XML meta veri dosyası.
- . Senkronizasyon bağdaştırıcınızla ilgili bilgileri içeren bir dosya. Çerçeve bu dosyayı veri aktarımını yüklemeyi ve planlamayı öğrenin.
- Uygulama manifestindeki beyanlar.
- . Bağlayıcı hizmeti tanımlayan ve bağdaştırıcıya özel meta verileri senkronize etmeye işaret eden XML.
Bu derste bu öğeleri nasıl tanımlayacağınız gösterilmektedir.
Senkronizasyon bağdaştırıcısı sınıfı oluşturma
Dersin bu bölümünde veri aktarım kodunu yazın. Sınıfı oluşturmak, senkronizasyon bağdaştırıcısı temel sınıfının genişletilmesini, oluşturucuları ve veri aktarımını tanımladığınız yöntemi uygulama görevlerden biridir.
Temel senkronizasyon bağdaştırıcısı sınıfını genişletme
Senkronizasyon bağdaştırıcısı bileşenini oluşturmak için
AbstractThreadedSyncAdapter
ve kurucularını yazıyor. Şunu kullanın:
oluşturucuları, senkronizasyon bağdaştırıcısı bileşeniniz her oluşturulduğunda kurulum görevlerini çalıştıracak şekilde
ayarlamak için Activity.onCreate()
kullandığınız gibi
etkinliği'ne dokunun. Örneğin, uygulamanız veri depolamak için bir içerik sağlayıcı kullanıyorsa oluşturucuları kullanın
ContentResolver
örneği almak için. İkinci bir formdan bu yana
oluşturucu, parallelSyncs
platformunu desteklemek için Android platform 3.0 sürümüne eklenmiştir
bağımsız değişkeni üzerinde çalışmaya devam etmek için, uyumluluğu sağlamak üzere iki tür kurucu oluşturmanız gerekir.
Not: Senkronizasyon bağdaştırıcısı çerçevesi, senkronizasyon bağdaştırıcısıyla çalışacak şekilde tasarlanmıştır tekli örnekler olan bileşenler. Senkronizasyon bağdaştırıcısı bileşeninin örneklendirilmesi ele alınmıştır bu bölümde daha ayrıntılı olarak Senkronizasyon Adaptörünü Çerçeveye bağlayın.
Aşağıdaki örnekte,
AbstractThreadedSyncAdapter
ve oluşturucuları:
Kotlin
/** * Handle the transfer of data between a server and an * app, using the Android sync adapter framework. */ class SyncAdapter @JvmOverloads constructor( context: Context, autoInitialize: Boolean, /** * Using a default argument along with @JvmOverloads * generates constructor for both method signatures to maintain compatibility * with Android 3.0 and later platform versions */ allowParallelSyncs: Boolean = false, /* * If your app uses a content resolver, get an instance of it * from the incoming Context */ val mContentResolver: ContentResolver = context.contentResolver ) : AbstractThreadedSyncAdapter(context, autoInitialize, allowParallelSyncs) { ... }
Java
/** * Handle the transfer of data between a server and an * app, using the Android sync adapter framework. */ public class SyncAdapter extends AbstractThreadedSyncAdapter { ... // Global variables // Define a variable to contain a content resolver instance ContentResolver contentResolver; /** * Set up the sync adapter */ public SyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); /* * If your app uses a content resolver, get an instance of it * from the incoming Context */ contentResolver = context.getContentResolver(); } ... /** * Set up the sync adapter. This form of the * constructor maintains compatibility with Android 3.0 * and later platform versions */ public SyncAdapter( Context context, boolean autoInitialize, boolean allowParallelSyncs) { super(context, autoInitialize, allowParallelSyncs); /* * If your app uses a content resolver, get an instance of it * from the incoming Context */ contentResolver = context.getContentResolver(); ... }
Veri aktarım kodunu ekleme
Senkronizasyon bağdaştırıcısı bileşeni otomatik olarak veri aktarımı yapmaz. Bunun yerine
veri aktarımı kodunuzu içerir. Böylece senkronizasyon bağdaştırıcısı çerçevesi
arka planda veri aktarımına izin verilmez. Çerçeve hazır olduğunda
uygulamanızın verilerini senkronize etmek için Google Etiket Yöneticisi'ni kullanarak
onPerformSync()
Verilerin ana uygulama kodunuzdan senkronizasyon adaptörü bileşenine aktarılmasını kolaylaştırmak için
senkronizasyon bağdaştırıcısı çerçevesi çağrıları
onPerformSync()
şu bağımsız değişkenlerden bahsedelim:
- Hesap
- .
Tetikleyen etkinlikle ilişkilendirilmiş bir
Account
nesnesi senkronize edin. Sunucunuzda hesap kullanılmıyorsa e-tablolarda tutabilirsiniz. - Ekstralar
- .
Senkronizasyonu tetikleyen etkinliğin gönderdiği işaretleri içeren bir
Bundle
adaptörü kullanabilirsiniz. - Uzmanlık
- . İçerik sağlayıcının sistemdeki yetkisi. Uygulamanızın şunlara erişmesi gerekir: isteyebilirsiniz. Genellikle yetkili kurum, kendi uygulamanızdaki içerik sağlayıcıya karşılık gelir. ziyaret edin.
- İçerik sağlayıcı müşterisi
- .
İçerik sağlayıcı için,
ContentProviderClient
yetkili argümanı.ContentProviderClient
genel bir hafif fiyattır içerik sağlayıcı arayüzü. Bu araç,ContentResolver
Veri depolamak için içerik sağlayıcı kullanıyorsanız bu nesneyle sağlayıcıya bağlanabilirsiniz. Aksi takdirde somut olarak ortaya koyar. - Senkronizasyon sonucu
- .
Senkronizasyona bilgi göndermek için kullandığınız bir
SyncResult
nesnesi bağdaştırıcı çerçevesidir.
Aşağıdaki snippet,
onPerformSync()
:
Kotlin
/* * Specify the code you want to run in the sync adapter. The entire * sync adapter runs in a background thread, so you don't have to set * up your own background processing. */ override fun onPerformSync( account: Account, extras: Bundle, authority: String, provider: ContentProviderClient, syncResult: SyncResult ) { /* * Put the data transfer code here. */ }
Java
/* * Specify the code you want to run in the sync adapter. The entire * sync adapter runs in a background thread, so you don't have to set * up your own background processing. */ @Override public void onPerformSync( Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) { /* * Put the data transfer code here. */ }
Projenin gidişatı boyunca
onPerformSync()
, şunlara özeldir:
uygulamanızın veri senkronizasyonu gereksinimleri ve sunucu bağlantısı protokolleri gibi,
uygulamanızın gerçekleştirmesi gereken genel görevler şunlardır:
- Sunucuya bağlanılıyor
- . Veri aktarımınız başladığında ağın kullanılabilir olduğunu varsayabilirsiniz, ancak senkronizasyon bağdaştırıcısı çerçevesi bir sunucuya otomatik olarak bağlanmaz.
- Veri indirme ve yükleme
- . Senkronizasyon bağdaştırıcısı, veri aktarımı görevlerini otomatik hale getirmez. Bir Google Hesabı'nı bir içerik sağlayıcıda depolamak; verileri ister, indirir ve sağlayıcıya ekler. Benzer şekilde sunucuya veri gönderiyorsanız verileri bir dosya, veritabanı veya sağlayıcıdan okumalı ve yükleme isteği gönderin. Ayrıca, veri aktarımı devam ediyor.
- Veri uyuşmazlıklarını ele alma veya verilerin ne kadar güncel olduğunu belirleme
- . Senkronizasyon bağdaştırıcısı, sunucudaki verilerle veriler arasındaki çakışmaları otomatik olarak işlemez. cihaz üzerinde. Ayrıca, sunucudaki verilerin cihazdaki verilere veya bunun tam tersi geçerlidir. Bunun yerine, her bir kullanıcı için ele alacağız.
- Temizleyin.
- . Sunucu bağlantılarını her zaman kapatıp geçici dosyaları ve önbellekleri birçok teknik bulunur.
Not: Senkronizasyon bağdaştırıcısı çerçevesi,
onPerformSync()
adlı cihazda
böylece kendi arka plan işlemenizi ayarlamanız gerekmez.
Senkronizasyonla ilgili görevlerinize ek olarak, normal
görevleri bulup
onPerformSync()
Tüm ağ görevlerinizi bu yöntemde yoğunlaştırarak, tam olarak ihtiyacınız olan pil gücünü
ağ arayüzlerini başlatmak ve durdurmak için gereken her şey. Ağ erişimini sağlama hakkında daha fazla bilgi için
varsa, çeşitli ağ erişimlerini açıklayan Transferring Data Free Training the Battery (Pili Tahliye Etmeden Verileri Aktarma) eğitim sınıfına bakın.
veya veri aktarım kodunuza ekleyebileceğiniz görevleri işleyeceğiz.
Senkronizasyon bağdaştırıcısını çerçeveye bağlama
Artık veri aktarımı kodunuz bir senkronizasyon bağdaştırıcısı bileşenine yerleştirilmiştir ancak
kullanabilirsiniz. Bunun için bir sınır oluşturmanız gerekir
Senkronizasyon bağdaştırıcısından özel bir Android bağlayıcı nesnesi geçiren Service
bileşenini çerçeveye ekleyin. Bu bağlayıcı nesnesiyle, çerçeve
onPerformSync()
yöntem ve
ona veri iletebilir.
Senkronizasyon bağdaştırıcısı bileşeninizi
onCreate()
yöntemi. Örneklendirerek
onCreate()
içindeki bileşeni
Hizmet başlatıldığında bu, çerçeve ilk kez uygulamanızı çalıştırmaya çalıştığında
veri aktarımından
yararlanabilirsiniz. Senkronizasyonun devre dışı kalması ihtimaline karşı, bileşeni iş parçacığı açısından güvenli bir şekilde somutlaştırmanız gerekir.
bağdaştırıcı çerçevesi, tetikleyicilere veya
yardımcı olur.
Örneğin, aşağıdaki snippet'te
bağlantı Service
, senkronizasyon bağdaştırıcısı bileşeninizi örneklendirir ve
Android bağlayıcı nesnesi:
Kotlin
package com.example.android.syncadapter /** * Define a Service that returns an [android.os.IBinder] for the * sync adapter class, allowing the sync adapter framework to call * onPerformSync(). */ class SyncService : Service() { /* * Instantiate the sync adapter object. */ override fun onCreate() { /* * Create the sync adapter as a singleton. * Set the sync adapter as syncable * Disallow parallel syncs */ synchronized(sSyncAdapterLock) { sSyncAdapter = sSyncAdapter ?: SyncAdapter(applicationContext, true) } } /** * Return an object that allows the system to invoke * the sync adapter. * */ override fun onBind(intent: Intent): IBinder { /* * 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() * * We should never be in a position where this is called before * onCreate() so the exception should never be thrown */ return sSyncAdapter?.syncAdapterBinder ?: throw IllegalStateException() } companion object { // Storage for an instance of the sync adapter private var sSyncAdapter: SyncAdapter? = null // Object to use as a thread-safe lock private val sSyncAdapterLock = Any() } }
Java
package com.example.android.syncadapter; /** * Define a Service that returns an <code><a href="/reference/android/os/IBinder.html">IBinder</a></code> 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(); } }
Not: Bir senkronizasyon bağdaştırıcısı için bağlı hizmet örneğini daha ayrıntılı şekilde görmek istiyorsanız: örnek uygulamaya bakın.
Çerçevenin gerektirdiği hesabı ekleyin
Senkronizasyon bağdaştırıcısı çerçevesi, her senkronizasyon bağdaştırıcısının bir hesap türüne sahip olmasını gerektirir. Beyan ettiniz
hesap türü değerine
Authenticator Meta Veri Dosyasını ekleyin. Şimdi bu hesap türünü
Android sistemi. Hesap türünü ayarlamak için hesap türünü kullanan bir yer tutucu hesap ekleyin
addAccountExplicitly()
numaralı telefonu arayarak.
Yöntemi çağırmak için en iyi yer
Uygulamanızın onCreate()
yöntemi
açılış etkinliği. Aşağıdaki kod snippet'inde bunu nasıl yapacağınız gösterilmektedir:
Kotlin
... // Constants // The authority for the sync adapter's content provider const val AUTHORITY = "com.example.android.datasync.provider" // An account type, in the form of a domain name const val ACCOUNT_TYPE = "example.com" // The account name const val ACCOUNT = "placeholderaccount" ... class MainActivity : FragmentActivity() { // Instance fields private lateinit var mAccount: Account ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... // Create the placeholder account mAccount = createSyncAccount() ... } ... /** * Create a new placeholder account for the sync adapter */ private fun createSyncAccount(): Account { val accountManager = getSystemService(Context.ACCOUNT_SERVICE) as AccountManager return Account(ACCOUNT, ACCOUNT_TYPE).also { newAccount -> /* * Add the account and account type, no password or user data * If successful, return the Account object, otherwise report an error. */ if (accountManager.addAccountExplicitly(newAccount, null, null)) { /* * If you don't set android:syncable="true" in * in your <provider> element in the manifest, * then call context.setIsSyncable(account, AUTHORITY, 1) * here. */ } else { /* * The account exists or some other error occurred. Log this, report it, * or handle it internally. */ } } } ... }
Java
public class MainActivity extends FragmentActivity { ... ... // Constants // The authority for the sync adapter's content provider public static final String AUTHORITY = "com.example.android.datasync.provider"; // An account type, in the form of a domain name public static final String ACCOUNT_TYPE = "example.com"; // The account name public static final String ACCOUNT = "placeholderaccount"; // Instance fields Account mAccount; ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... // Create the placeholder account mAccount = CreateSyncAccount(this); ... } ... /** * Create a new placeholder account for the sync adapter * * @param context The application context */ public static Account CreateSyncAccount(Context context) { // Create the account type and default account Account newAccount = new Account( ACCOUNT, ACCOUNT_TYPE); // Get an instance of the Android account manager AccountManager accountManager = (AccountManager) context.getSystemService( ACCOUNT_SERVICE); /* * Add the account and account type, no password or user data * If successful, return the Account object, otherwise report an error. */ if (accountManager.addAccountExplicitly(newAccount, null, null)) { /* * If you don't set android:syncable="true" in * in your <provider> element in the manifest, * then call context.setIsSyncable(account, AUTHORITY, 1) * here. */ } else { /* * The account exists or some other error occurred. Log this, report it, * or handle it internally. */ } } ... }
Senkronizasyon bağdaştırıcısı meta veri dosyasını ekleme
Senkronizasyon bağdaştırıcısı bileşeninizi çerçeveye bağlamak için çerçeveyi
Bileşeni açıklayan ve ek işaretler sağlayan meta verilerle birlikte. Meta veriler,
senkronizasyon bağdaştırıcınız için oluşturduğunuz hesap türü, bir içerik sağlayıcı yetkilisi bildirir
uygulamanızla ilişkilendirilen, senkronizasyon bağdaştırıcılarıyla ilgili sistem kullanıcı arayüzünün bir bölümünü kontrol eder.
ve senkronizasyonla ilgili diğer işaretleri tanımlar. Bu meta verileri şurada depolanan özel bir XML dosyasında tanımlayın:
uygulama projenizdeki /res/xml/
dizini. Dosyaya istediğiniz adı verebilirsiniz,
ancak adı genellikle syncadapter.xml
.
Bu XML dosyası şunu içeren tek bir XML öğesi <sync-adapter>
içeriyor: <sync-adapter>
şu özellikleri kullanın:
android:contentAuthority
- .
İçerik sağlayıcınızın URI yetkilisidir. Örneğin,
Kulama İçerik Sağlayıcısı Oluşturma adlı önceki derste uygulamanızda
ilişkilendirmek
android:authorities
(uygulama manifest dosyanıza eklediğiniz<provider>
öğesinde). Bu özellik bu bölümde daha ayrıntılı olarak açıklanmıştır Manifest'te sağlayıcıyı beyan edin.
. Senkronizasyon bağdaştırıcınızı kullanarak bir içerik sağlayıcıdan sunucuya veri aktarıyorsanız bu işlem değeri, bu veriler için kullandığınız içerik URI yetkilisiyle aynı olmalıdır. Bu değer aynı zamanda son teoride belirttiğiniz yetkililerdenandroid:authorities
. özelliği hakkında daha fazla bilgi edinin.<provider>
android:accountType
- .
Senkronizasyon bağdaştırıcısı çerçevesinin gerektirdiği hesap türü. Değer aynı olmalıdır
kimlik doğrulayıcı meta veri dosyasını oluştururken sağladığınız hesap türü değeri olarak
Authenticator Meta Veri Dosyasını Ekleme bölümünde açıklanmıştır. Bu, aynı zamanda
bölümdeki kod snippet'inde sabit
ACCOUNT_TYPE
Çerçevenin gerektirdiği hesabı ekleyin. - Ayar özellikleri
-
-
android:userVisible
- . Senkronizasyon bağdaştırıcısının hesap türünün görünürlüğünü ayarlar. Varsayılan olarak hesap simgesi ve hesap türüyle ilişkili etiket Sistemin Ayarlar uygulamasının Hesaplar bölümündedir; bu nedenle senkronizasyonunuzu kolayca ilişkilendirilen bir hesap türünüz veya alan adınız yoksa bağdaştırıcı görünmez nasıl sağlayabileceğini de öğreneceksiniz. Hesap türünüzü görünmez yapsanız da kullanıcıların Senkronizasyon bağdaştırıcınızı, uygulamanızın etkinliklerinden birindeki bir kullanıcı arayüzüyle kontrol edebilirsiniz.
-
android:supportsUploading
- .
Buluta veri yüklemenize olanak tanır. Yalnızca uygulamanız varsa bunu
false
olarak ayarlayın verileri indirir. -
android:allowParallelSyncs
- . Senkronizasyon bağdaştırıcısı bileşeninizin birden fazla örneğinin aynı anda çalışmasına olanak tanır. Uygulamanız birden fazla kullanıcı hesabını destekliyorsa ve birden fazla kullanıcı hesabına izin vermek istiyorsanız bunu kullanın. paralel olarak veri aktarımı yapmasına olanak tanır. Daha önce çalıştırmazsanız bu işaretin hiçbir etkisi olmaz veri aktarımı sunar.
-
android:isAlwaysSyncable
- .
Senkronizasyon bağdaştırıcısı çerçevesine, senkronizasyon bağdaştırıcınızı herhangi bir zamanda çalıştırabileceğini belirtir
ve saat seçenekleri de gösterilir. Senkronizasyon işleminin ne zaman yapılacağını programlı bir şekilde
çalışabilir, bu işareti
false
olarak ayarlayıp koşmak içinrequestSync()
senkronizasyon adaptörünü kullanmanız gerekir. Senkronizasyon bağdaştırıcısı çalıştırma hakkında daha fazla bilgi edinmek için şu derse bakın: Senkronizasyon Adaptörünü Çalıştırma
-
Aşağıdaki örnekte, tek bir yer tutucu hesap kullanan bir senkronizasyon bağdaştırıcısına ait XML ve yalnızca indirme işlemleri yapıyor.
<?xml version="1.0" encoding="utf-8"?> <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="com.example.android.datasync.provider" android:accountType="com.android.example.datasync" android:userVisible="false" android:supportsUploading="false" android:allowParallelSyncs="false" android:isAlwaysSyncable="true"/>
Manifest'te senkronizasyon bağdaştırıcısını bildirme
Senkronizasyon bağdaştırıcısı bileşenini uygulamanıza ekledikten sonra, izin istemeniz gerekir
bileşenin kullanımıyla ilgili olup bağlı Service
özelliğini beyan etmeniz gerekir.
görünür.
Senkronizasyon bağdaştırıcısı bileşeni, ağ ile İnternet'e erişim izni istemeniz gerekir. Ayrıca, uygulamanız Böylece senkronizasyonu kontrol edebilmeniz için senkronizasyon bağdaştırıcısı ayarlarını okuma ve yazma izni isteyebilirsiniz. uygulamanızdaki diğer bileşenlerden programatik olarak sağlamanız gerekir. Ayrıca, uygulamanızın oluşturduğunuz kimlik doğrulayıcı bileşenini kullanmasına olanak tanıyan özel izin Temel Kimlik Doğrulayıcı Oluşturma dersini inceleyebilirsiniz.
Bu izinleri istemek için aşağıdakileri uygulama manifestinize,
<manifest>
:
-
android.permission.INTERNET
- . Senkronizasyon bağdaştırıcısı kodunun, veri indirebilmesi veya yükleyebilmesi için internete erişmesine izin verir sunucu arasında geçiş yapacaktır. Şu durumda bu izni tekrar eklemeniz gerekmez: istemiştim.
-
android.permission.READ_SYNC_SETTINGS
- .
Uygulamanızın mevcut senkronizasyon bağdaştırıcısı ayarlarını okumasına izin verir. Örneğin,
getIsSyncable()
çağrısına izin vermeniz gerekir. -
android.permission.WRITE_SYNC_SETTINGS
- .
Uygulamanızın senkronizasyon adaptörü ayarlarını kontrol etmesine izin verir. Aşağıdaki işlemleri yapabilmek için bu izne ihtiyacınız var:
addPeriodicSync()
kullanarak düzenli senkronizasyon bağdaştırıcısı çalıştırmalarını ayarlayın. Aşağıdaki işlemler için bu izin gerekmez:requestSync()
. Şu konu hakkında daha fazla bilgi edinmek için: senkronizasyon adaptörünü çalıştırmak için Senkronizasyon Bağdaştırıcısı Çalıştırma başlıklı makaleyi inceleyin.
Aşağıdaki snippet'te izinlerin nasıl ekleneceği gösterilmektedir:
<manifest> ... <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/> ... </manifest>
Son olarak, çerçevenin kullandığı bağlı Service
öğesini beyan etmek için
senkronizasyon bağdaştırıcınızla etkileşimde bulunduğunda, aşağıdaki XML'i uygulama manifestinize bir alt öğe olarak ekleyin
/ <application>
:
<service android:name="com.example.android.datasync.SyncService" android:exported="false" android:process=":sync"> <intent-filter> <action android:name="android.content.SyncAdapter"/> </intent-filter> <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter" /> </service>
İlgili içeriği oluşturmak için kullanılan
<intent-filter>
.
öğesi, intent işlemi tarafından tetiklenen bir filtre oluşturur.
android.content.SyncAdapter
, senkronizasyon bağdaştırıcısını çalıştırmak için sistem tarafından gönderildi. Filtre
tetiklendiğinde, sistem oluşturduğunuz bağlı hizmeti başlatır. Bu örnekte
SyncService
Özellik
android:exported="false"
.
yalnızca uygulamanızın ve sistemin
Service
. Özellik
android:process=":sync"
.
sisteme Service
öğesini
sync
. Uygulamanızda birden fazla senkronizasyon bağdaştırıcısı varsa bu işlemi paylaşabilirler.
Bu da genel giderleri azaltır.
İlgili içeriği oluşturmak için kullanılan
<meta-data>
.
öğesi, daha önce oluşturduğunuz senkronizasyon bağdaştırıcısı meta veri XML dosyasının adını sağlar.
İlgili içeriği oluşturmak için kullanılan
android:name
.
özelliği, bu meta verilerin senkronizasyon bağdaştırıcısı çerçevesi için olduğunu belirtir. İlgili içeriği oluşturmak için kullanılan
android:resource
.
öğesi, meta veri dosyasının adını belirtir.
Artık senkronizasyon bağdaştırıcınızın tüm bileşenlerine sahipsiniz. Bir sonraki derste, senkronizasyon bağdaştırıcısı çerçevesine, bir etkinliğe yanıt olarak veya sırasında senkronizasyon bağdaştırıcınızı çalıştırmasını söyleyin gerektiğini unutmayın.