Activity Service总结
1.Service调用
Service可以通过两种方法调用:
startService和stopService :这种方式开启后,需要调用stopService来销毁。多次调用startService,只会在第一次调用onCreate,后面只会调用onStartCommand。
生命周期为:onCreate()->onStartCommand()->running->onDestroy()
bindService和unbindService :这种方式与activity绑定,当activity销毁会自动销毁。生命周期:onCreate()->onBind()->running->unBind()->onDestroy()
当同时调用这两种方式来开启服务,需要同时调用stopService 和unbindService,这样Service才会销毁,Service是不会自动销毁的。
2.Service特性
Service一般用于没有UI界面的后台,但是Service是运行于主线程中。所以不能在Service中写耗费太多时间的逻辑,否则容易ANR。所以你需要开启一个线程去进行耗时操作,Service和线程没有什么关系,是两个概念。
防止Service被杀死,可以使用前台Service。
3.远程Service和AIDL跨进程通信
<service
android:name="com.xxx.xxx.Service"
android:process=":remote" />
android:name="com.xxx.xxx.Service"
android:process=":remote" />
通过android:process=":remote"这条属性,Service就会成为远程Service,但是Service会运行于另外一条进程中,所以Activity与Service通信需要使用AIDL而不能使用bindService这种方式了。