• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

src/com/android/car/vendorservice/reference/25-Apr-2025-12249

Android.bpD25-Apr-20251,009 3431

AndroidManifest.xmlD25-Apr-20251 KiB2710

README.mdD25-Apr-20253.5 KiB7548

README.md

1<!--
2  Copyright (C) 2023 The Android Open Source Project
3
4  Licensed under the Apache License, Version 2.0 (the "License");
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License
15  -->
16
17## Reference implementation for Vendor Service Controller's service
18
19This project has the reference implementation for a service which can be used for vendor service
20controller. Vendor service controller reads different service components from RRO configuration
21(config_earlyStartupServices) and these
22services are started/bound by Vendor service controller. Vendor service controller is part of
23CarService. The config needs to be defined in the following format:
24
25```
26 <item>com.bar.foo/.Service#bind={bind|start|startForeground},
27 user={all|system|foreground|visible|backgroundVisible},
28 trigger={asap|resume|userUnlocked|userPostUnlocked}</item>
29
30 bind: bind - start service with Context#bindService
31       start - start service with Context#startService
32       startForeground - start service with Context#startForegroundService
33       If service was bound it will be restarted unless it is constantly crashing.
34       The default value is 'start'
35 user: all - the service will be bound/started for system and all visible users
36       system - the service will be started/bound only for system user (u0)
37       foreground - the service will be bound/started only for foreground users
38       visible - the service will be bound/started only for visible users (as defined by
39                 `UserManager#isUserVisible()`).
40       backgroundVisible - the service will be bound/started only for background users that
41                           are visible.
42       The default value is 'all'
43 trigger: indicates when the service needs to be started/bound
44       asap - the service might be bound when user is not fully loaded, be careful with
45              this value, the service also needs to have directBootAware flag set to true
46       resume - start service when the device resumes from suspend (suspend-to-RAM, or
47                suspend-to-disk).
48       userUnlocked - start service when user unlocked the device
49       userPostUnlocked - start service later after user unlocked. This is used when the
50                          service is not urgent and can wait to start.
51       The default value is 'userUnlocked'
52 maxRetries: the maximum number of attempts to rebind/restart a disconnected service.
53       Retries start with 4 second initial delay, being doubled after each failed attempt.
54       The default value is 6.
55
56 If the service bound/started for foreground user it will be unbound/stopped when user
57 is no longer foreground.
58```
59
60Service bound to CarService are special. As CarService is a persistent process, these services
61bound with CarService would be running as
62PROCESS_STATE_IMPORTANT_FOREGROUND, It means they would have higher priority and would not be killed
63due to resource constraints. They can be killed based on different user scope. For example, services
64running for visible user only will be killed when user is no longer visible. By default, these
65services don't have access to things like location, camera, microphone or network.
66
67## Remaining work
68b/308208710
69
70b/308208631
71
72b/306704239
73
74
75