androidsystemserver
① 如何在Android中添加系統服務
這里說的系統服務,是指捆綁在system_process進程中的服務。仔細閱讀源碼可以發現,在frameworks/base/services/java/com/android/server/SystemServer.java中添加了很多服務,什麼熵信息、電量、wife等等服務,這些服務啟動都在launcher之前,一般要繼承Binder或者繼承一個AIDL。下面試著來添加一個簡單系統服務。
一、在frameworks/base/core/java/android/os/ 增加一個aidl文件,最後用aidl工具生產一個Java文件,這樣可以方便後面:然後在修改/frameworks/base/Android.mk,在LOCAL_SRC_FILES里添加一行:core/java/android/os/IYtTtsService.aidl \不確定補充:把AIDL文件寫在這個地方似乎可以避免加@hide
二 、在frameworks/base/services/java/com/android/server/ 新建要增加的service,繼承上面aidl生產的java
三、在frameworks/base/services/java/com/android/server/SystemServer.java, ServerThread中run()方法中增加代碼
四、在ContextImpl getSystemService中添加代碼
五、測試代碼
② android里每個服務啟動時context到底從哪裡來的呢
1.android里每個服務啟動時context到底從哪裡來的呢????以mountservice的context為例
在SystemServer.java的run函數中有如下代碼
context = ActivityManagerService.main(factoryTest);
......
if (!"0".equals(SystemProperties.get("system_init.startmountservice"))) {
try {
/*
* NotificationManagerService is dependant on MountService,
* (for media / usb notifications) so we must start MountService first.
*/
Slog.i(TAG, "Mount Service");
mountService = new MountService(context);
ServiceManager.addService("mount", mountService);
} catch (Throwable e) {
reportWtf("starting Mount Service", e);
}
}
由此可知,由systemserver啟動的服務的context都來自ActivityManagerService
ActivityManagerService.java
public static final Context main(int factoryTest) {
......
ActivityThread at = ActivityThread.systemMain();
......
Context context = at.getSystemContext();
......
return context;
}
由上可知,該context是由ActivityThread 創建的
ActivityThread .java
public ContextImpl getSystemContext() {
synchronized (this) {
if (mSystemContext == null) {
ContextImpl context =
ContextImpl.createSystemContext(this);
LoadedApk info = new LoadedApk(this, "android", context, null,
CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO);
context.init(info, null, this);
context.getResources().updateConfiguration(
getConfiguration(), getDisplayMetricsLocked(
Display.DEFAULT_DISPLAY,
CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO));
mSystemContext = context;
//Slog.i(TAG, "Created system resources " + context.getResources()
// + ": " + context.getResources().getConfiguration());
}
}
return mSystemContext;
}
在ContextImpl .java中
static ContextImpl createSystemContext(ActivityThread mainThread) {
final ContextImpl context = new ContextImpl();
context.init(Resources.getSystem(), mainThread, Process.myUserHandle());
return context;
}
由此可知所有systemserver啟動的服務的context對象實際為一個ContextImpl對象
即ServerThread::run<-ActivityManagerService.main<-ActivityThread::getSystemContext<-ContextImpl.createSystemContext
2.對於一個apk中的context一般直接指向這個activity本身,因為activity本身即繼承自context
③ systemservice是什麼
systemservice就是系統服務,是指執行指定系統功能的程序、常式或進程,以便支持其他程序,尤其是底層(接近硬體)程序。systemservice作為一種應用程序類型,它在後台運行。通過網路提供服務時,systemservice服務可以在活動目錄中發布,從而促進了以服務為中心的管理和使用。
系統服務一般在後台運行。與用戶運行的程序相比,服務不會出現程序窗口或對話框,只有在任務管理器中才能觀察到它們的身影 。ServiceserviceS可以在無用戶登錄和用戶已經注銷的情況下運行,不像應用程序在沒有用戶注銷的時候是會被終止的。
手機里的systemservice是指執行手機指定系統功能的程序、進程,以便支持其他程序,尤其是手機的低層(接近硬體)程序。一些原始的systemservice的程序最好不好刪除,以防系統程序出現錯誤,或者其他應用服務程序使用受限。部分自裝的systemservic可以通過root系統,卸載系統程序。
(3)androidsystemserver擴展閱讀:
systemservice對於安卓是核心的存在。systemserver是Android系統的核心流程。作為Android基本服務的提供者,它是Android系統運行的最基本要求。所有程序在此系統伺服器的進程中運行。 systemserver進程是android java機器運行的第一個進程,是andorid系統最重要的運行基礎。
systemservice在手機Android開發過程中也會接觸到。各種系統管理服務,如窗口操作將使用窗口管理服務WindowManager,電源相關操作將使用電源管理服務PowerManager,其他系統管理服務,像振動管理服務振動器。 systemservice為系統層提供了很多手機控制介面。
systemservice還是手機Android開發者需要了解的程序。了解這些介面的使用方式就可以方便的進行系統控制,獲得系統各個服務的信息,而且不用需要了解這些介面的具體實現方式。
④ 安卓系統中system+server是甚麼能刪除
安卓系統里的system server是系統預裝的軟體,安卓手機里的system server可以刪除,但是刪除會影響手機運行。
卸載手機的預裝軟體需要獲得root許可權。
獲取root許可權:手機USB連接電腦——點擊USB連接手機——連接成功——手機助手——一鍵root。
⑤ 如何分析Android SystemServer Watchdog重啟問題
[SOLUTION]
1. Watchdog目的是監控系統幾個比較主要的service,如果超過一定時間沒有反應,認為系統出錯,會強制重
啟Android.
2. Watchdog原理:
/Frameworks/base/services/java/com/android/server/Watchdog.java
a) 首先SystemServer中的watchdog線程會向android.server.ServerThread線程發送一個
MONITOR message,同時將mCompleted標志位置為false.
⑥ 轉android SystemServer.java啟動的服務有哪些
如下:
EntropyService:熵(shang)服務,用於產生隨機數
PowerManagerService:電源管理服務
ActivityManagerService:最核心服務之一,Activity管理服務
TelephonyRegistry:電話服務,電話底層通知服務
PackageManagerService:程序包管理服務
AccountManagerService:聯系人帳戶管理服務
ContentService:內容提供器的服務,提供跨進程數據交換
LightsService:光感應感測器服務
BatteryService:電池服務,當電量不足時發廣播
VibratorService:震動器服務
AlarmManagerService:鬧鍾服務
WindowManagerService:窗口管理服務
BluetoothService:藍牙服務
InputMethodManagerService:輸入法服務,打開關閉輸入法
AccessibilityManagerService:輔助管理程序截獲所有的用戶輸入,並根據這些輸入給用戶一些額外的反饋,起到輔助的效果,View的點擊、焦點等事件分發管理服務
DevicePolicyManagerService:提供一些系統級別的設置及屬性
StatusBarManagerService:狀態欄管理服務
ClipboardService:粘貼板服務
NetworkManagementService:手機網路管理服務
TextServicesManagerService:
NetworkStatsService:手機網路狀態服務
NetworkPolicyManagerService:
WifiP2pService:Wifi點對點直聯服務
WifiService:WIFI服務
ConnectivityService:網路連接狀態服務
ThrottleService:modem節流閥控制服務
MountService:磁碟載入服務,通常也mountd和vold服務結合
NotificationManagerService:通知管理服務,通常和StatusBarManagerService
DeviceStorageMonitorService:存儲設備容量監聽服務
LocationManagerService:位置管理服務
CountryDetectorService:檢查當前用戶所在的國家
SearchManagerService:搜索管理服務
DropBoxManagerService:系統日誌文件管理服務(大部分程序錯誤信息)
WallpaperManagerService:壁紙管理服務
AudioService:AudioFlinger上層的封裝的音量控制管理服務
UsbService:USB Host和device管理服務
UiModeManagerService:UI模式管理服務,監聽車載、座機等場合下UI的變化
BackupManagerService:備份服務
AppWidgetService:應用桌面部件服務
RecognitionManagerService:身份識別服務
DiskStatsService:磁碟統計服務
SamplingProfilerService:性能統計服務
NetworkTimeUpdateService:網路時間更新服務
⑦ system server是什麼難道罪魁禍首就是它
System Server是Android系統的核心,他在Dalvik虛擬機啟動後立即開始初始化和運行。其它的系統服務在System Server進程的環境中運
⑧ android怎麼調用系統服務
1、Started
Started的Service,通過在Application里用startService(Intent intent)方法來啟動。這種類型的Service一經啟動,會在後面無休止地運行,即使啟動它的Activity被Destroy掉。要停止此類型的Service,可在Service中調用stopSelf()或在Application中調用stopService(Intent intent),要不然就只能等Android系統在系統資源緊張的時候把它殺掉。
2、Bound
Bound的Service,通過在Application里調用bindService()方法來啟動。該類型的Service與Application綁定在一起,一旦綁定的所有Application消失了,Android會Detroy掉該Service。也可以主動調用unbindService()方法來解綁Service。
有時候我們想在Activity中獲知Service的狀態,例如一個音樂播放器,Service負責音樂播放,Activity負責顯示當前歌曲名和播放進度。
可以用Broadcast,這個也不失為一個解決方法。
但如果可以獲取Service實例,那麼就可以調用Service中自定義的一些方法來獲取Service狀態了。
首先要明確的是,第一種類型的Service是無能為力的。因為Activity與Service之間並沒有相關聯的介面,即使這個Service是在Activity里start的,一旦start,兩者不再有關聯。
⑨ 安卓系統裡面的system server可以卸載嗎
安卓手機里的system server 可以刪除。
安卓系統里的system server是系統預裝的軟體,刪除會影響手機運行。
卸載手機的預裝軟體需要獲得root許可權。
手機USB連接電腦-----點擊USB連接手機----連接成功----手機助手----一鍵ROOT。
⑩ systemserver是什麼軟體
SystemServer 是 Android JAVA 層的系統服務模塊,這個模塊主要功能就是管理供Android 應用開發的 system service.
1. 它首先指定 SystemServer 進程的參數 ;
2. 根據指定的參數來創建 SystemServer 進程;
3. 調用 handleSystemServerProcess 啟動第一步指定進程參數過程中指定的類,此時為「com.android.server.SystemServer 」 ,啟動的這個進程在 ps 查看後顯示為」 system_server 」。
希望你會採納我的答案,很高興為你解決問題,謝謝。