)]}'
{
  "log": [
    {
      "commit": "d417d625d244356bc770e2692fd59e754a72f59f",
      "tree": "2f45745021f70830046d62fc844e1f6c248235d7",
      "parents": [
        "d0856259762eddd873a068c2e9cd3d4e45009a68"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 19 16:14:25 2013 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 31 15:41:40 2014 -0800"
      },
      "message": "Introduce \"IdleService\" API to expose idle-time maintenance to apps\n\nWhen an application wishes to do low-priority background work when the\ndevice is otherwise idle (e.g. in a desk dock overnight), it declares\na service in its manifest that requires this permission:\n\n     android:permission\u003d\"android.permission.BIND_IDLE_SERVICE\n\nto launch, and which publishes this intent filter:\n\n    \u003cintent-filter\u003e\n        \u003caction android:name\u003d\"android.service.idle.IdleService\" /\u003e\n    \u003c/intent-filter\u003e\n\nThis string is declared in the API as IdleService.SERVICE_INTERFACE.\n\nThe service must be implemented by extending the new \"IdleService\"\nclass, which provides the API through which the system will communicate\nwith the app.\n\nIdleService declares three methods, two of which are lifecycle callbacks\nto the service, and the third of which is for the service itself to\ninvoke when appropriate.  The lifecycle callbacks are\n\n    public abstract boolean onIdleStart();\n    public abstract void onIdleStop();\n\nThe first of these is a notification to the service that an idle\nmaintenance interval has begun.  The service can then spin off\nwhatever non-UI work it wishes.  When the interval is over, or if\nthe OS determines that idle services should be shut down immediately,\nthe onIdleStop() method will be invoked.  The service must shut down\nany background processing immediately when this method is called.\n\nBoth of these methods must return immediately.  However, the OS\nholds a wakelock on the application\u0027s behalf for the entire period\nbetween the onIdleStart() and onIdleStop() callbacks.  This means\nthat for system-arbitrated idle-time operation, the application does\nnot need to do any of its own wakelock management, and does not need\nto hold any wakelock permissions.\n\nThe third method in IdleService is\n\n    public final void finishIdle();\n\nCalling this method notifies the OS that the application has finished\nwhatever idle-time operation it needed to perform, and the OS is thus\nfree to release the wakelock and return to normal operation (or to\nallow other apps to run their own idle services).\n\nCurrently the idle window granted to each idle service is ten minutes.\nThe OS is rather conservative about when these services are run; low\nbattery or any user activity will suppress them, and the OS will not\nchoose to run them particularly often.\n\nIdle services are granted their execution windows in round-robin\nfashion.\n\nBug 9680213\n\nChange-Id: Idd6f35940c938c31b94aa4269a67870abf7125b6\n"
    }
  ]
}
