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名字后缀,不限制。