1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.chrome.browser.sync; 6 7import android.app.Application; 8import android.app.Service; 9import android.content.Context; 10import android.content.Intent; 11import android.os.IBinder; 12 13public abstract class ChromiumSyncAdapterService extends Service { 14 private static ChromiumSyncAdapter sSyncAdapter = null; 15 private static final Object LOCK = new Object(); 16 17 /** 18 * Get the sync adapter reference, creating an instance if necessary. 19 */ 20 private ChromiumSyncAdapter getOrCreateSyncAdapter(Context applicationContext) { 21 synchronized (LOCK) { 22 if (sSyncAdapter == null) { 23 sSyncAdapter = createChromiumSyncAdapter(applicationContext, getApplication()); 24 } 25 } 26 return sSyncAdapter; 27 } 28 29 @Override 30 public IBinder onBind(Intent intent) { 31 return getOrCreateSyncAdapter(getApplicationContext()).getSyncAdapterBinder(); 32 } 33 34 protected abstract ChromiumSyncAdapter createChromiumSyncAdapter(Context applicationContext, 35 Application application); 36} 37