# Interface ContinuityBridge

public interface ContinuityBridge

The platform seam of the continuity framework, implemented by ports and returned from `CodenameOneImplementation.getContinuityBridge()`. A null bridge -- the base implementation -- leaves saving and restoring state on this device working, because that half is pure `com.codename1.io.Storage`, and makes every cross-device capability report itself unsupported.

Two independent capabilities live behind one bridge because a port that has either almost always has both, and an app asks about them separately anyway:

- Continuation advertises what the user is doing so a second device they own can pick it up while the two are together. On Apple platforms this is an `NSUserActivity`; nothing else implements it, and nothing else is expected to.
- The synced store is a small key/value store the platform carries between the user's devices without them being near each other.

Everything crosses this boundary as data -- strings and plist-representable maps -- never as live model objects, because on Apple platforms the payload is handed to the operating system and may be delivered to a different device, and a different build of the app, than the one that produced it.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clearContinuation()`
  Withdraws the advertised activity.
  `boolean`
  `isContinuationSupported()`
  Returns true when this port can advertise the user's current activity to their other devices.
  `boolean`
  `isSyncedStoreSupported()`
  Returns true when this port has a key/value store the platform syncs between the user's devices.
  `void`
  `publishContinuation(String activityType, String title, Map<String,Object> userInfo)`
  Advertises the user's current activity, replacing whatever was advertised before.
  `void`
  `setCallback(ContinuityCallback callback)`
  Installs the framework's inbound seam.
  `String`
  `syncedStoreGet(String key)`
  Reads a value from the synced store.
  `String[]`
  `syncedStoreKeys()`
  Every key currently in the synced store, in no particular order.
  `boolean`
  `syncedStorePut(String key, String value)`
  Writes a value to the synced store, replacing any previous value for the key.
  `void`
  `syncedStoreRemove(String key)`
  Removes a key from the synced store.

- ## Method Details

  - ### isContinuationSupported

    boolean isContinuationSupported()
    Returns true when this port can advertise the user's current activity to their other devices.

  - ### publishContinuation

    void publishContinuation(String activityType, String title, Map<String,Object> userInfo)

    Advertises the user's current activity, replacing whatever was advertised before.

    The payload has already been validated as representable and within the platform's size budget by the time it arrives here.

    ###### Parameters

    - `activityType`: the reverse-DNS type the build declared
    - `title`: a human readable label the receiving device may show, or null
    - `userInfo`: the state, as strings, numbers, booleans, lists and maps of those

  - ### clearContinuation

    void clearContinuation()
    Withdraws the advertised activity. Nothing is being continued after this returns.

  - ### isSyncedStoreSupported

    boolean isSyncedStoreSupported()
    Returns true when this port has a key/value store the platform syncs between the user's devices.

  - ### syncedStorePut

    boolean syncedStorePut(String key, String value)

    Writes a value to the synced store, replacing any previous value for the key.

    Returns whether the store took it. A void signature made `SyncedStore.put` answer true whenever a store merely existed, so the documented fallback -- write locally when the synced write fails -- could never run, and a value the store refused was reported saved.

    ###### Parameters

    - `key`: the key
    - `value`: the value

    ###### Returns

    true when the store holds the value afterwards

  - ### syncedStoreGet

    String syncedStoreGet(String key)

    Reads a value from the synced store.

    ###### Returns

    the value, or null when the key is absent

  - ### syncedStoreRemove

    void syncedStoreRemove(String key)

    Removes a key from the synced store. Removing an absent key does nothing.

    ###### Parameters

    - `key`: the key

  - ### syncedStoreKeys

    String[] syncedStoreKeys()
    Every key currently in the synced store, in no particular order. Never null.

  - ### setCallback

    void setCallback(ContinuityCallback callback)

    Installs the framework's inbound seam. Called once during initialization, before any other method on this bridge; ports must retain it and may call it from any thread.

    ###### Parameters

    - `callback`: the seam, never null