-
Notifications
You must be signed in to change notification settings - Fork 780
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-05-14:谈一谈startService和bindService的区别,生命周期以及使用场景? #53
Comments
1、生命周期上的区别
2、调用者如何获取绑定后的Service的方法
3、既使用startService又使用bindService的情况
4、本地服务与远程服务
|
在高版本的Android系统中,当主进程被Kill后,应该是整个进程组都会被Kill掉,包括远程服务。之前做进程保活的时候有用过远程服务来实现,但是会被Kill掉。 |
上面已经说了很多了,这里补充一点:为什么 bindService 能和 Activity 的生命周期联动?
最终下去会发现给一个LoadedApk里面,里面使用了一个名叫mService的Map将Serivice的信息存储起来了,然后在ActivityThead的handleDestroyActivity方法里面找到下面的代码的:
追踪下去就会到H类的处理HanlderMessage里面:
回到ContextImpl:
回到了LoadedApk,在removeContextRegistrations方法里面有这么一段代码:
看到这里的吗:
总结就是bindService会让系统保存该Service的信息并在ActivtyThread里面监听Actiivty的销毁,通过一个for循环找出需要解除绑定的Serice来进行解绑 |
上述已经说得很好啦 我这里也来写一遍 加深印象 区别:对应着动态绑定和静态绑定; 静态对应着startService,动态对应着bindService,静态有自己独立的生命周期,动态会依附activity等组件的生命周期。 生命周期: onCreate → startCommand → onDestroy 使用场景:即上述区别,如果需要一直存在的服务,即静态绑定,反之依赖于组件 |
startService和bindService的区别在于启动方式和生命周期 |
No description provided.
The text was updated successfully, but these errors were encountered: