如何停止服务运行SyncAdapter

时间:2016-02-23 10:41:05

标签: android service android-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以及&#34;:sync&#34;服务,我尝试使用stopService(intent),但它不起作用,我知道这种类型的服务应该是绑定服务,stopService不会工作。

1 个答案:

答案 0 :(得分:0)

这可能不是答案,但我想分享解决方法。

我从服务配置中删除了android:process =“:sync”。这样就不会有另一个过程。我在用户注销时删除了相关帐户,因此在用户再次登录之前,同步适配器将不再工作。