import android.os.IBinder;\r
\r
/**\r
- * Background service for syncing files to our local Database\r
+ * Background service for synchronizing remote files with their local state.\r
* \r
- * @author Bartek Przybylski\r
+ * Serves as a connector to an instance of {@link FileSyncAdapter}, as required by standard Android APIs. \r
* \r
+ * @author Bartek Przybylski\r
+ * @author David A. Velasco\r
*/\r
public class FileSyncService extends Service {\r
- public static final String SYNC_MESSAGE = "ACCOUNT_SYNC";\r
- public static final String SYNC_FOLDER_REMOTE_PATH = "SYNC_FOLDER_REMOTE_PATH";\r
- public static final String IN_PROGRESS = "SYNC_IN_PROGRESS";\r
- public static final String ACCOUNT_NAME = "ACCOUNT_NAME";\r
- public static final String SYNC_RESULT = "SYNC_RESULT";\r
-\r
- public String getSyncMessage(){\r
- return getClass().getName().toString() + SYNC_MESSAGE;\r
- }\r
+ \r
+ // Storage for an instance of the sync adapter\r
+ private static FileSyncAdapter sSyncAdapter = null;\r
+ // Object to use as a thread-safe lock\r
+ private static final Object sSyncAdapterLock = new Object();\r
+ \r
/*\r
* {@inheritDoc}\r
*/\r
@Override\r
public void onCreate() {\r
+ synchronized (sSyncAdapterLock) {\r
+ if (sSyncAdapter == null) {\r
+ sSyncAdapter = new FileSyncAdapter(getApplicationContext(), true);\r
+ }\r
+ }\r
}\r
\r
/*\r
*/\r
@Override\r
public IBinder onBind(Intent intent) {\r
- return new FileSyncAdapter(getApplicationContext(), true).getSyncAdapterBinder();\r
+ return sSyncAdapter.getSyncAdapterBinder();\r
}\r
+ \r
}\r