)]}'
{
  "commit": "e7f972122db87dc54e41ed1a6e417534d43bca3a",
  "tree": "8342973439086cceaa3c66fed400bf894abf36de",
  "parents": [
    "56d9353195e4c767e60ecfab1e118d3cc30f3a91"
  ],
  "author": {
    "name": "Dianne Hackborn",
    "email": "hackbod@google.com",
    "time": "Thu Feb 24 14:40:20 2011 -0800"
  },
  "committer": {
    "name": "Dianne Hackborn",
    "email": "hackbod@google.com",
    "time": "Fri Feb 25 14:46:27 2011 -0800"
  },
  "message": "Implement issue #3426299: Introduce application \"stopped\" state\n\nThe package manager now keeps track of whether an application is\nstopped.  There are new intent flags to control whether intent\nfilters in a stopped application will match the intent.  This is\ncurrently used in one place, sending broadcasts, so that stopped\napps can not be launched due to background processes.\n\nThe package manager during first init makes sure no applications\nare in the stopped state.  When new applications are installed,\nthat begin in the stopped state.  When the activity manager is\nlaunching a component of an application, it ensures the application\nis taken out of the stopped state.\n\nThe \"force stop\" button in manage applications will now put an\napplication back in to the stopped state; it can\u0027t go back out\nof the stopped state until one of its components is launched by\nthe activity manager.\n\nThere will probably be a few more places where we need to filter\nstopped applications out of intent matches, but doing this for\nbroadcast is a very big first step.\n\nThis also introduces a new broadcast that is sent to an application\nafter it is replaced with a new .apk.  But only if the app is not\nin the stopped state.  This makes it a lot easier for developers to\nimplement code to get their application back in proper running shape\nafter an upgrade.\n\nFinally another new broadcast is added that is sent to a package\u0027s\ninstaller at the first time it is launched.  This allows the installer\nto tell the package about it being installed only when it is first\nactually used.\n\nChange-Id: I589c53ff0e0ece868fe734ace4439c0d202dca2d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "10896043785bea3f8d1ef25c4735222ab6718da0",
      "old_mode": 33188,
      "old_path": "api/current.xml",
      "new_id": "a8504348a30e4de85ba0640f205854bfd4a3f5cf",
      "new_mode": 33188,
      "new_path": "api/current.xml"
    },
    {
      "type": "modify",
      "old_id": "ce7f0961e899bf31b78e0646a4fdf89a68385ac8",
      "old_mode": 33188,
      "old_path": "core/java/android/content/Intent.java",
      "new_id": "7bdd1b9df82b1e6b01302413447e0a61bd212d09",
      "new_mode": 33188,
      "new_path": "core/java/android/content/Intent.java"
    },
    {
      "type": "modify",
      "old_id": "2d95781781d51583f9b271532226c0986c63c8e0",
      "old_mode": 33188,
      "old_path": "core/java/android/content/pm/ApplicationInfo.java",
      "new_id": "92b2c3b9fd65dee7000de453c3016224a0a16e32",
      "new_mode": 33188,
      "new_path": "core/java/android/content/pm/ApplicationInfo.java"
    },
    {
      "type": "modify",
      "old_id": "034525e7f39bb6bc304013355e67b2603bc91eab",
      "old_mode": 33188,
      "old_path": "core/java/android/content/pm/IPackageManager.aidl",
      "new_id": "fbf8f922529179c7f93ce0548037477f68c173b0",
      "new_mode": 33188,
      "new_path": "core/java/android/content/pm/IPackageManager.aidl"
    },
    {
      "type": "modify",
      "old_id": "7676258b4659a7050404ec61284014fa140f7e64",
      "old_mode": 33188,
      "old_path": "core/java/android/content/pm/PackageParser.java",
      "new_id": "7ebfda4b8f133f33479d4b201619835286056567",
      "new_mode": 33188,
      "new_path": "core/java/android/content/pm/PackageParser.java"
    },
    {
      "type": "modify",
      "old_id": "cdc0f2df5d175de7de8fe28533876b2460c8c7a2",
      "old_mode": 33188,
      "old_path": "core/java/android/server/BluetoothInputProfileHandler.java",
      "new_id": "e6513fd3469906b6d086f37d44f1ef503ac80cd8",
      "new_mode": 33188,
      "new_path": "core/java/android/server/BluetoothInputProfileHandler.java"
    },
    {
      "type": "modify",
      "old_id": "12d7afd6eb20285e417788290646c47933194433",
      "old_mode": 33188,
      "old_path": "core/res/AndroidManifest.xml",
      "new_id": "beb824ca18b78af17cf8c278ec496995b36cafc9",
      "new_mode": 33188,
      "new_path": "core/res/AndroidManifest.xml"
    },
    {
      "type": "modify",
      "old_id": "e9ee12ca2b8bebc5ae832c5a9d62e24ed71d29a9",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/IntentResolver.java",
      "new_id": "b78389bbe8da0ddacb5a4908e87729a961c9ba8c",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/IntentResolver.java"
    },
    {
      "type": "modify",
      "old_id": "7af60c5da45af70addd8773b1df0235be223fbf9",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/PackageManagerService.java",
      "new_id": "f1a6e151e173953c230aabfbd6b9b1835901416d",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/PackageManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "399c19ae7f574ff324588d489d46d9609d42ec96",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/am/ActivityManagerService.java",
      "new_id": "8d30868c52482423d8a78d221a7973badc5f4e42",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/am/ActivityManagerService.java"
    },
    {
      "type": "modify",
      "old_id": "5b44d39037d2cb3ea779c24c4eb525ad1d7a3e68",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/am/ActivityStack.java",
      "new_id": "3a613bb11beed0ba2336ee9a3ae1b91d2ce86d30",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/am/ActivityStack.java"
    }
  ]
}
