Я работаю над SyncAdapter, следуя документу:
http://developer.android.com/training/sync-adapters/creating-sync-adapter.html
SyncAdapter запускается со службой, конфигурация такая:
<service
android:name="com.example.android.datasync.SyncService"
android:exported="true"
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>
Вот код моего сервиса:
public class SyncService extends Service {
private static VmosoEventSyncAdapter sSyncAdapter;
private static final Object sSyncAdatperLock = new Object();
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
synchronized (sSyncAdatperLock) {
if (null == sSyncAdapter) {
sSyncAdapter = new VmosoEventSyncAdapter(getApplicationContext(), true);
}
}
}
@Override
public IBinder onBind(Intent intent) {
// Toast.makeText(this, "Start performing events sync... this will be done in about 1 minute.", Toast.LENGTH_SHORT).show();
return sSyncAdapter.getSyncAdapterBinder();
}
}
В моем приложении, когда пользователь входит в систему, начинает работать адаптер синхронизации (клиент — это приложение «Календарь», этот SyncAdapter предназначен для синхронизации событий между приложением «Календарь» и сервером).
Когда пользователь выходит из системы, я хочу остановить адаптер синхронизации, но я не знаю, как остановить этот SyncAdapter и службу «: sync», я пытался использовать stopService(intent)
, но это не работает, я знаю, что этот тип службы должен быть связанной службой, stopService
не будет работать.