• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## 8.5\. Consistent Performance
2
3Performance can fluctuate dramatically for high-performance long-running apps,
4either because of the other apps running in the background or the CPU throttling
5due to temperature limits. Android includes programmatic interfaces so that when
6the device is capable, the top foreground application can request that the
7system optimize the allocation of the resources to address such fluctuations.
8
9Device implementations:
10
11*    [C-0-1] MUST report the support of Sustained Performance Mode accurately
12through the [`PowerManager.isSustainedPerformanceModeSupported()`](
13https://developer.android.com/reference/android/os/PowerManager.html#isSustainedPerformanceModeSupported%28%29)
14API method.
15
16*   SHOULD support Sustained Performance Mode.
17
18If device implementations report support of Sustained Performance Mode, they:
19
20*   [C-1-1] MUST provide the top foreground application a consistent level of
21performance for at least 30 minutes, when the app requests it.
22*   [C-1-2] MUST honor the [`Window.setSustainedPerformanceMode()`](
23https://developer.android.com/reference/android/view/Window.html#setSustainedPerformanceMode%28boolean%29)
24API and other related APIs.
25
26If device implementations include two or more CPU cores, they:
27
28*   SHOULD provide at least one exclusive core that can be reserved by the top
29foreground application.
30
31If device implementations support reserving one exclusive core for the top
32foreground application, they:
33
34*    [C-2-1] MUST report through the [`Process.getExclusiveCores()`](https://developer.android.com/reference/android/os/Process.html#getExclusiveCores%28%29)
35     API method the ID numbers of the exclusive cores that can be reserved
36     by the top foreground application.
37*    [C-2-2] MUST not allow any user space processes except the device drivers
38     used by the application to run on the exclusive cores, but MAY allow some
39     kernel processes to run as necessary.
40
41If device implementations do not support an exclusive core, they:
42
43*    [C-3-1] MUST return an empty list through the
44[`Process.getExclusiveCores()`](
45https://developer.android.com/reference/android/os/Process.html#getExclusiveCores%28%29)
46     API method.
47