通過init.rc中的property實現動態控制service的開啓與關閉

根據前一篇博客中的方法描述,我在當前正在開發的android project中進行了相應的代碼實現,主要是有兩處代碼需要修改添加:
第一部分:init.rc
關於init.rc的作用在這裏進行簡單描述,這個init.rc文件是系統啓動時init進程要讀取的一個重要的腳本,它裏面是一些系統中比較重要的service的註冊、文件路徑的創建等等:比如:adbd 服務就是在這裏啓動的。

在文件中加入如下代碼段:

service matsrv /system/bin/matsrv normal
	disabled

on property:sys.mat.mode=on
    start matsrv 

 解釋:
1、service 用來註冊matsrv服務,/system/bin/matsrv 是程序的路徑,normal是matsrv的參數,此參數是要傳給matsrv的main函數的,和service沒有半點關係。
2、on property部分是設定start matsrv的條件,條件滿足纔可以開啓matsrv服務



第二部分:如何動態的控制”matsrv服務“的開啓和關閉
在上層java程序中可以使用下面方法開啓和關閉服務:
開啓: (比如可以在onCreat中進行開啓)

SystemProperties.set("sys.mat.mode","on");
SystemProperties.set("ctl.start","matsrv");

關閉: (比如可以在button控件的onClick中進行關閉)

SystemProperties.set("ctl.stop","matsrv");
SystemProperties.set("sys.mat.mode","off");

當然在framework中應該也同樣可以使用相應的函數實現對屬性的讀寫控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章