Как остановить службу запускает SyncAdapter

Я работаю над 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 не будет работать.


person LiuWenbin_NO.    schedule 23.02.2016    source источник


Ответы (1)


Это может быть не ответ, но я хотел бы поделиться обходным путем.

Я удалил android:process=":sync" из конфигурации службы. Таким образом, не будет другого процесса. И я удалил связанную учетную запись, когда пользователь выходит из системы, поэтому адаптер синхронизации больше не будет работать, пока пользователь снова не войдет в систему.

person LiuWenbin_NO.    schedule 24.02.2016