我正在按照文档处理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
不会工作。
答案 0 :(得分:0)
这可能不是答案,但我想分享解决方法。
我从服务配置中删除了android:process =“:sync”。这样就不会有另一个过程。我在用户注销时删除了相关帐户,因此在用户再次登录之前,同步适配器将不再工作。