簡體   English   中英

Android:管理器和SystemService架構

[英]Android: Manager and SystemService architecture

在開發新的系統服務時,我想確保自己做對了。 舉例來說,我有一個名為MySystemManagerService的新SystemService。 所以我必須創建一個MySystemManager。 (類似於PackageManager和PackageManagerService,ActivityManager和ActivityManagerService)。

我想知道Manager&ManagerService組合正在完成什么,我們不能僅使用Service來完成同一件事。

任何想法對此都會有很大幫助。

處理系統服務的傳統方式是擁有一個Manager和一個ManagerService。 原因是Manager封裝了您希望用戶可以使用的所有功能。 PackageManager和ActivityManager是很好的例子,但范圍很大。 對於較小的示例,我將查看DevicePolicyManagerDevicePolicyManagerService

您可以看到Manager根本沒有做任何事情,只是包裝了難看的try catch語句並使外觀看起來更好。 它還很好地包裝了向開發人員公開的所有功能。 基本上,這就是您要離開Manager的全部。

如果查看Manager調用的任何方法(在服務中),您將看到此forceCrossUserPermission(userhandle)方法。 它自己的服務正在執行權限檢查。 盡管開發人員可以通過存根手動獲取服務的句柄,但是如果它正在執行安全檢查,則它仍然不能使用該服務提供的任何方法。

該服務可以很豐富,並且可以通過這種方式為系統提供很多功能,但是您仍然可以向用戶公開服務的某些部分。 只要您對不需要任何隨機用戶使用的方法執行安全性檢查,那么該功能將嚴格保留為系統的一部分。

綜上所述,如果您打算為您的mod公開一個公共SDK,那么您確實應該遵循該模式以簡化用戶的生活。 但是,如果您只想向系統提供服務,則可以按照我上面鏈接的相同方式進行一些權限檢查,並將功能保留在系統本地。

只需記住,您不需要執行安全檢查的任何功能實際上都會對用戶公開,並且可以按用戶想要的方式使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM