System_Server Process
Many services run in the system server process, which is the basis of the entire android framework.
Native service
SurfaceFlinger
This is a service for framebuffer synthesis. It combines the logical window image data (surface) of various applications and applications into a physical window and displays the service program of framebuffer.
Java service:
Most of these services have a manager class for processes. This is an RPC call. You can call the xxxManager method, in fact, it is sent by the Binder to the method corresponding to xxxManagerService in the system_server process, and the result is taken back through the binder.
1. EntropyService
Entropy service, periodic loading and storage of random information. It is mainly because after linux is started, the/dev/random status may be predictable, so some applications that require random information may have problems. No application interface is required.
2. PowerManagerService-> PowerManager
Android power management is also an important part. For example, you can turn off unnecessary devices in the standby mode, the screen and keyboard Backlight in the standby mode, and the number of devices to be turned on during user operations.
3. ActivityManagerService-> ActivityManager
This is the most core service in the entire Android framework. It manages the core implementation of tasks, process management, and Intent parsing in the entire framework. Although the Manager Service is called Activity, it is not only subject to Activity, but also has three other components and processes. That is to say, the user is responsible for application lifecycle management.
4. TelephonyRegistry-> TelephonyManager
The telephone registration and management service module can obtain the telephone connection status, signal strength, and so on. <You can delete it, but you can see it clearly.>
5. PackageManagerService-> PackageManager
This includes unpacking, verification, installation, and upgrade of the software package. To solve the problem that we cannot install the. so file, we should first analyze the cause from this.
6. AccountManagerService-> AccountManager
A system service that provides account, password, and authtoken management for all
Accounts on the device.
7. ContentService-> ContentResolver
Content services are mainly services that provide solutions such as databases.
8. BatteryService
Monitors battery charging and status services. Intent is broadcast when the status changes.
9. HardwareService
Generally, it is the service program of ring and vibrate.
10. SensorService-> SensorManager
Manages the services of the Sensor device, registers the client device, and activates the sensor when the client needs to use the Sensor.
11. WindowManagerService-> WindowManager-> PhoneWindowManager
Highly bonded with ActivityManagerService
Window Management, the core here is the distribution and management of input events.
12. AlarmManagerService-> AlarmManager
Alarm service program
13. Define thservice-> define thdevice
Bluetooth background management and service programs
14. StatusBarService-> StatusBarManager
It is responsible for the statusBar Standard update, animation, and other services with little service.
15. ClipboardService-> ClipboardManager
Similar to the clipBoard service of other systems, it provides copy and paste capabilities.
16. InputMethodManagerService-> InputMethodManager
The Management Service Program of the input method, including when to enable the input method, and switching the input method.
17. NetStatService
Mobile Network Service
18. ConnectivityService-> ConnectivityManager
The network connection status service can be queried by other applications. When the network status changes, it can also be broadcast and changed.
19. AccessibilityManagerService-> AccessibilityManager
This may take a closer look. It mainly involves the distribution and management of click, focus, text changes, and other events, debugging and problem locating of the entire system, you also need to carefully view this service.
20. icationicationmanagerservice-> icationicationmanager
Responsible for managing and notifying the occurrence of background events. This is glued together with statusbar, and the response icon is usually added to statusbar. You can use this to know what happened in the system background.
21. MountService
A service program for disk loading usually works with a linux daemon program, such as vold/mountd, to listen for and broadcast device mount/unmount/bad removal events.
22. DeviceStorageMonitorService
Monitors disk space services. If the disk space is less than 10%, a warning is given to the user.
23. LocationManagerService-> LocationManager
To join the GPS service, take a closer look at this part. Now the navigation in the application does not respond. You can start to look at it.
24. SearchManagerService-> SearchManager
The search manager service handles the search UI, and maintains a registry of searchable activities.
25. Checkin Service (FallbackCheckinService)
It seems that checkin service is a package provided by google, with no source code. The source code is fallbackCheckinService.
26. WallpaperManagerService-> WallpaperManager
Services that manage the desktop background and deeply customize the Desktop System, which need to be understood and expanded <compatibility at the same time>
27. AudioService-> AudioManager
The upper-Layer Management encapsulation of AudioFlinger mainly manages volume, sound effects, sound channels, and ringtones.
28. HeadsetObserver
Monitoring cycle of earphone plugging events
29. DockObserver
If there is a license in the system, when the mobile phone is installed or pulled out, it will have to be managed by him.
30. BackupManagerService-> BackupManager
Backup Service
31. AppWidgetService-> AppWidgetManager
Android allows users to write programs on the desktop as Widgets. This is the interface for this process and service.
32. StatusBarPolicy
Specifies the icon to display on the status bar.
MediaServer service process
MediaServer services are basically native services, and the mediaServer process is started in init. rc. It is not a daemon process, which is easy to confuse. It is also a system service process similar to the systemserver process. It provides the location where the real service code of the RPC call of the application process runs. Its services are related to media recording and playback. There are three main services:
AudioFlinger
Audio Recording and playback services, including sound mixing
MediaPlayerService
The media playback service is provided. opencore is the core module of this module.
CameraService
Supports recording and preview functions of camera.
AudioPolicyService
The main functions include checking the connection status of the input and output devices and switching the system's audio policy.
9.4.1 start various system service threads
The SystemServer process plays a "neural Hub" role in the running environment of Android. Most system services that can directly interact with the APK application run in this process, common examples include WindowManagerServer (Wms), ActivityManagerSystemService (AmS), and PackageManagerServer (PmS). These system services exist in the SystemServer process as a thread. The following describes all the service threads and their startup sequence.
The main () function of SystemServer first calls the init1 () function, which is a native function that initializes Dalvik virtual machines. After the function is executed, it calls the init2 () function at the Java end. This is why init2 () is not referenced in Java source code, and the main system services are in init2 () completed in the function.
The function first creates a ServerThread object, which is a thread and runs the thread directly, as shown in the following code:
Therefore, various service threads are started from inside the run () method of ServerThread.
Basically, each service has a corresponding Java class. From the coding standard perspective, the mode for starting these services can be categorized into three types, as shown in 9-3.
|
Figure 9-3 startup modes of different services |
Mode 1 refers to constructing a service directly using constructor. Because most services correspond to one thread, a thread is created and runs automatically in the constructor.
Mode 2 means that the service class will provide a getInstance () method to obtain the service object. The advantage is that the system only contains one service object.
Mode 3 refers to execution starting from the main () function of the service class.
Regardless of the preceding mode, after a service object is created, you may also need to call the init () or systemReady () function of the service class to start the object, of course, these are all customized within the service class. To differentiate the preceding startup processes, a new method is used to describe the startup process. For example, if a service object is created in Mode 1 and init () is called to start the service, we use mode 1.2. If the constructor is started after it returns, no other call is required, that is, nothing is done. We use the 1.1 mode.
Table 9-2 lists all the services started in SystemServer and the startup modes of these services.
Table 9-2 List of startup services in SystemServer
Service Class Name |
Role description |
Startup Mode |
EntropyService |
Provide pseudo-random number |
1.0 |
PowerManagerService |
Power Management Service |
1.2/3 |
ActivityManagerService |
One of the core services, managing Activity |
Custom |
TelephonyRegistry |
Register the call module event response through this service, such as restart, close, start, etc. |
1.0 |
PackageManagerService |
Package Management Service |
3.3 |
AccountManagerService |
Account management service refers to a contact account, not an account in Linux. |
1.0 |
ContentService |
ContentProvider service that provides cross-process data exchange |
3.0 |
BatteryService |
Battery Management Service |
1.0 |
LightsService |
Natural Light Intensity Sensor Service |
1.0 |
VibratorService |
Vibrator Service |
1.0 |
AlarmManagerService |
Timer Management Service, which provides timed Reminder Service |
1.0 |
WindowManagerService |
One of the most core services of Framework, responsible for Window Management |
3.3 |
BluetoothService |
Bluetooth service |
1.0 + |
DevicePolicyManagerService |
Provides system-level settings and attributes |
1.3 |
StatusBarManagerService |
Status Bar Management Service |
1.3 |
ClipboardService |
System clipboard Service |
1.0 |
InputMethodManagerService |
Input Method Management Service |
1.0 |
NetStatService |
Network Status Service |
1.0 |
NetworkManagementService |
Network Management Service |
NMS. create () |
ConnectivityService |
Network Connection Management Service |
2.3 |
ThrottleService |
I am not clear about its role |
1.3 |
(Continued table)
Service Class Name |
Role description |
Startup Mode |
AccessibilityManagerService |
The management program intercepts all user input and Some input to the user for some additional feedback, to help the effect |
1.0 |
MountService |
Mount service. You can use this service to call the mount program at the Linux level. |
1.0 |
Icationicationmanagerservice |
Notification Bar management service, notification bar and form in Android State columns, but the former is on the left and the latter is on the right. |
1.3 |
DeviceStorageMonitorService |
Disk Space status detection service |
1.0 |
LocationManagerService |
Geographic location service |
1.3 |
SearchManagerService |
Search Management Service |
1.0 |
DropBoxManagerService |
Use this service to access Dropbox programs at the Linux level |
1.0 |
WallpaperManagerService |
The wallpaper management service, unlike the desktop background, In the View system, the wallpaper can be used as the background of any window. |
1.3 |
Audioservice |
Audio Management Service |
1.0 |
Backupmanagerservice |
System Backup Service |
1.0 |
Appwidgetservice |
Widget Service |
1.3 |
Recognitionmanagerservice |
Identity Recognition Service |
1.3 |
Diskstatsservice |
Disk Statistics Service |
1.0 |
The Startup Mode of AmS is as follows:
Call the main () function and return a Context object, instead of the AmS service itself.
Call AmS. setSystemProcess ().
Call AmS. installProviders ().
Call systemReady (). After AmS executes systemReady (), it starts the systemReady () function of the associated service one after another to complete the overall initialization.
For details about the internal Startup Process of a service, refer to the source code. These processes are generally relatively simple.