【问题标题】:How to stop the service runs a SyncAdapter如何停止服务运行 SyncAdapter
【发布时间】:2016-02-23 10:41:04
【问题描述】:

我正在按照文档处理 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 不行。

【问题讨论】:

    标签: android service android-syncadapter


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      相关资源
      最近更新 更多