1## 3.17\. Heavyweight Apps
2
3If device implementations declare the feature [`FEATURE_CANT_SAVE_STATE`](
4https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_CANT_SAVE_STATE),
5then they:
6
7*    [C-1-1] MUST have only one installed app that specifies
8     [`cantSaveState`](https://developer.android.com/reference/android/R.attr#cantSaveState)
9     running in the system at a time. If the user
10     leaves such an app without explicitly exiting it (for example by pressing
11     home while leaving an active activity the system, instead of pressing back
12     with no remaining active activities in the system), then
13     device implementations MUST prioritize that app in RAM as they do for other
14     things that are expected to remain running, such as foreground services.
15     While such an app is in the background, the system can still apply power
16     management features to it, such as limiting CPU and network access.
17*    [C-1-2] MUST provide a UI affordance to chose the app that won't
18     participate in the normal state save/restore mechanism once the user
19     launches a second app declared with [`cantSaveState`](https://developer.android.com/reference/android/R.attr#cantSaveState)
20     attribute.
21*    [C-1-3] MUST NOT apply other changes in policy to apps that specify
22     [`cantSaveState`](https://developer.android.com/reference/android/R.attr#cantSaveState),
23     such as changing CPU performance or changing scheduling prioritization.
24
25If device implementations don't declare the feature [`FEATURE_CANT_SAVE_STATE`](
26https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_CANT_SAVE_STATE),
27then they:
28
29*    [C-1-1] MUST ignore the [`cantSaveState`](https://developer.android.com/reference/android/R.attr#cantSaveState)
30     attribute set by apps and MUST NOT change the app behavior based on that
31     attribute.
32