UpdateManager
  public
  
  
  
  class
  UpdateManager
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | com.google.android.things.update.UpdateManager | 
The UpdateManager allows an application or service to control how updates are automatically applied to the device. Updating a device involves performing the following operations:
- Checking for an available software update
- Downloading and applying an update
- Rebooting the device into the new software version
The UpdateManager defines a set of Policies that are used to determine which of these steps are taken automatically, and which need to be initiated by the device's application software.
When creating a policy using the UpdatePolicy.Builder, a deadline value also
 needs to be specified using setApplyDeadline(long, TimeUnit).  When
 using a policy other than POLICY_APPLY_AND_REBOOT, this deadline governs how
 long the UpdateManager will wait for before it will automatically apply the update (if not
 already applied) and then reboot into the updated software.  Depending on the needs of the
 application, examples values are: 1 day, 1 week, 30 days.
This provides a safety net so that developers can be certain that updates will eventually be applied, even if the device is using a policy that restricts automatically applying an update, rebooting the device, or both.
The current policy that's in use is returned as part of the UpdateManagerStatus that
 is returned by getStatus()
The UpdateManager supports a series of different usage scenarios. To automatically apply
 updates and reboot as they come available, use POLICY_APPLY_AND_REBOOT:
 
     UpdateManager.getInstance().setPolicy(
         new UpdatePolicy.Builder()
             .setPolicy(POLICY_APPLY_AND_REBOOT)
             .setUpdateDeadline(1, TimeUnit.DAYS)
             .build());
 For a device that should not reboot at an arbitrary time use POLICY_APPLY_ONLY and then schedule the reboot at a time that is more convenient
 for the device:
 
UpdateManager mUpdateManager = UpdateManager.getInstance(); mUpdateManager.setPolicy( new UpdatePolicy.Builder() .setPolicy(POLICY_APPLY_ONLY) .setUpdateDeadline(2, TimeUnit.DAYS) .build()); mUpdateManager.addStatusListener( updateManagerStatus -> { if (updateManagerStatus.currentState == UpdateManagerStatus.STATE_UPDATED_NEEDS_REBOOT) { scheduleRebootAtMidnight(); } });
For devices that may only be updated by the direct action of a person or remote management
 system, an UpdatePolicy can be constructed with POLICY_CHECKS_ONLY
 and a very long deadline (years). When doing so, the application MUST use performUpdateNow(int) with POLICY_APPLY_ONLY or POLICY_APPLY_AND_REBOOT to trigger an update to be acted on.
Summary
| Public methods | |
|---|---|
| 
        
        
        
        
        
        void | 
      addStatusListener(StatusListener listener)
      Register a  | 
| 
        
        
        
        
        
        String | 
      getChannel()
      Return the update channel that the device is using for update checks. | 
| 
        
        
        static
        
        
        UpdateManager | 
      getInstance()
      Returns the  | 
| 
        
        
        
        
        
        UpdateManagerStatus | 
      getStatus()
      Return the latest  | 
| 
        
        
        
        
        
        boolean | 
      performUpdateNow(int policy)
      Immediately check for an available software update, and act on that update per the given policy. | 
| 
        
        
        
        
        
        void | 
      removeStatusListener(StatusListener listener)
      Unregister a  | 
| 
        
        
        
        
        
        void | 
      setChannel(String channel)
      Set the update channel that the device should be on. | 
| 
        
        
        
        
        
        void | 
      setPolicy(UpdatePolicy policy)
      Set the  | 
| Inherited methods | |
|---|---|
|  From
class 
  
    java.lang.Object
  
 | |
Public methods
addStatusListener
void addStatusListener (StatusListener listener)
Register a StatusListener with the UpdateManager.
| Parameters | |
|---|---|
| listener | StatusListener: The listener to call with progress updates. | 
getChannel
String getChannel ()
Return the update channel that the device is using for update checks. e.g "stable-channel", "beta-channel", etc.
| Returns | |
|---|---|
| String | The current update channel. | 
getInstance
UpdateManager getInstance ()
Returns the UpdateManager instance for this application.
| Returns | |
|---|---|
| UpdateManager | The UpdateManager instance. | 
getStatus
UpdateManagerStatus getStatus ()
Return the latest UpdateManagerStatus.
| Returns | |
|---|---|
| UpdateManagerStatus | The latest UpdateManagerStatus. | 
| Throws | |
|---|---|
| IllegalStateException | if the UpdateManager service is not ready | 
performUpdateNow
boolean performUpdateNow (int policy)
Immediately check for an available software update, and act on that update per the given policy.
Calls to this method override the policy set via setPolicy(UpdatePolicy).
 
- using POLICY_CHECKS_ONLYwill only perform an update check.
- using POLICY_APPLY_ONLY, if an update is found, it will be downloaded and applied.
- using POLICY_APPLY_AND_REBOOT, if an update is found, it will be downloaded and applied, and then the device will be automatically rebooted.
If this is called while an update (or check) is already in progress, this will return false to indicate that the request to perform and update was not acted on.
| Parameters | |
|---|---|
| policy | int: The policy to use for the operation | 
| Returns | |
|---|---|
| boolean | True if the update check has been successfully started. | 
| Throws | |
|---|---|
| IllegalArgumentException | if an invalid value is specified for policy | 
| IllegalStateException | if the UpdateManager service is not ready | 
removeStatusListener
void removeStatusListener (StatusListener listener)
Unregister a StatusListener from the UpdateManager.
| Parameters | |
|---|---|
| listener | StatusListener: The listener to unregister. | 
setChannel
void setChannel (String channel)
Set the update channel that the device should be on.
NOTE: When changing channel, the device automatically factory resets as part of the next update (the update to the version from the new channel).
| Parameters | |
|---|---|
| channel | String: The new update channel. | 
setPolicy
void setPolicy (UpdatePolicy policy)
Set the UpdatePolicy that the UpdateManager is to use.
| Parameters | |
|---|---|
| policy | UpdatePolicy: The UpdatePolicy to follow. | 
| Throws | |
|---|---|
| IllegalStateException | if the UpdateManager service is not ready. | 
