編輯:Android開發教程
Android存在3大類service, 處於android系統的不同框架層,具體解讀如下:
1) init.rc中的service
//關鍵詞“service" name 二進制可執行程序路徑
service servicemanager /system/bin/servicemanager
class core
user system
group system
critical
onrestart restart healthd
onrestart restart zygote
onrestart restart media
onrestart restartsurfaceflinger
onrestart restart drm
其實這類service就是為了定義開啟啟動的程序,該類service的對象是一個可以執行的binary程序。把它定義為一種service是為了更好的描述該binary運行的屬性,比如運行用戶,組,啟動一次(oneshot)還是不停啟動(程序死掉後會再次啟動)。更重要的是它還能描述各個程序之間的關系。比如onrestart restart drm,這個描述的意思是當drm程序重啟時,該程序也要主動重啟。
同時通過如下命令還可以運行時動態啟動或者關閉某一service,當然要有root權限
property_set("ctl.start", "servicemanager");property_set("ctl.stop", "servicemanager");
adb shell setprop ctl.start servicemanager;adb shell setprop ctl.stop servicemanager
2) 系統層service
返回欄目頁:http://www.bianceng.cn/OS/extra/
該類service和我們通常理解的service很接近,就是系統中提供服務的,該類service定義出服務接口,其他模塊通過該接口即能使用該服務。該類服務的執行體可以是二進制代碼,也可以是java代碼。比如:
c++類型的service:
SurfaceFlinger,CameraManagerService, MediaPlayerService
java類型的service:
ActivityManagerService,WindowManagerService,NetworkManagerService
實現機制是該類service向上面提到的servicemanager注冊它的服務,其他模塊通過名字從servicemanager拿到service的接口。在shell通過命令 "service list"能列出系統中所有的該類service。
c++類型service相關接口:
sp<IServiceManager> sm = defaultServiceManager(); sm.addService(name, xx)/sm.getService(name)
java類型service相關接口:
ServiceManager.getService(name)/addService(name,xx)
3) SDK層的service
不像前面兩類service,他們是一類對象的總稱,而該類service是開發者經常接觸的一個很具體的java類android.app.Service.java。它是android sdk暴露給第三方應用使用的。 它是和Activity對等的,是android 四大組件之一(Activity,Service, Provider, BroadcastReceiver)。
總結:
第一類service: 系統集成工程師負責
第二類service: framework系統工程師負責
第三類service:芸芸眾生的android應用程序開發者每日親密接觸
作者:csdn博客 ITleaks
AnalogClock視圖顯示了一個模擬的時鐘,其中有一個時針和一個分針。與其相對的是DigitalClock視圖 ,它可以顯示數字模擬時鐘。這兩個視圖只能顯示系統時間,
Android是google公司針對手機開發的一個平台,並公布了其中大部分代碼,其大部分應用程序都是用JAVA開發的,畢竟它是商業性的產品嘛,有所保留也是理所當然的。對於
本文中如果直接安裝時不出現錯誤,則可以忽略(一、二、三、四、五),我安裝的是5.1.1,直接成功,就是有點慢,要有耐心。如果到最後一步,啟動不起來,報錯:emulator
即便是無法說服Android各大廠商放棄物理導航鍵設計,但谷歌似乎已決定至少先讓Android設備擺脫電容式導航鍵的“困擾”。我們知道,谷歌是在推