Service 是Android 的一種組件,跟線程無關。android
Service 分兩種啓動方式 startService()和bindService()spa
兩種都須要在Androidmanifest.xml配置線程
<service android:name="com.xx.xx"></service>
兩種Intent都可以使用 code
Intent intent= new Intent("com.itg.download");
或者xml
Intent intent= new Intent(context,service.class);
兩種啓動方式blog
生命週期生命週期
startService: 未建立:onCreate()->onStartCommand()->onStop()->onDestroy()進程
已建立:onStartCommand()->onStop()->OnDestroy()rem
bindService:未建立:onCreate()->onBind()->onUnbind()->onDestroy()it
已建立:onBind()->onUnbind()->onDestroy()
即:二者onCreate()方法只會執行一次。二者即便屢次被建立但只會有一個service實例。
startService方式,一經建立,即便依賴的Activity被摧毀,依舊能夠不受影響的運行;
而bindService方式,隨依賴的Activity銷燬而結束。
關於LocalService和RemoteService
解釋:localService即本地服務,生命週期依賴於主進程(UI進程)。remoteService,獨立服務,被建立於獨立進程,如需與UI交互,須要IPC。
使用 兩種啓動方式默認便是localService;
RemoteService,需配置
1:<service android:name="com.xx.xx" process=":remote"></service> 或: 2:<service android:name="com.xx.xx" process=".remote"></service> 區別:1:本應用私有服務獨立進程。2:共享服務獨立進程 下面寫法錯誤,打包會出錯 <service android:name="com.xx.xx" process="remote"></service> 出錯:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED manifest 寫法畸形 即寫法不當。
remote是service名字後綴,不限制。