通过引用bindService(Intent服务,ServiceConnection conn,int标志)
我想知道,我们什么时候应该使用0 flags,什么时候应该要我们用BIND_AUTO_CREATE的flags?该文档没有解释标志0的含义是什么.
flags// Start auto complete service.
autoCompleteServiceIntent = new Intent(AutoCompleteService.class.getName());
startService(autoCompleteServiceIntent);
bindService(autoCompleteServiceIntent, serviceConnection, 0);
Run Code Online (Sandbox Code Playgroud)
BIND_AUTO_CREATEas的示例flagsmContext.bindService(new Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
Sou*_*rma 13
对于方法bindService(Intent, ServiceConnection, flag),如果flag = Context.BIND_AUTO_CREATE使用的话会绑定service并启动该服务,但如果"0"使用,方法将返回true,并喜欢将无法启动服务,直到调用startService(Intent)由开始的service.其中一个常见用途"0"是,如果该服务正在运行,则连接到本地服务的活动,否则您可以启动该服务.
d4v*_*idi 10
在语义上,BIND_AUTO_CREATE如果您绑定到一个服务,只要服务器绑定到该服务,该服务的生命周期才有效.那是因为所有客户都没有退出的那一刻,它就会崩溃.
不要使用BIND_AUTO_CREATE- 或者我应该改写:BIND_AUTO_CREATE如果你真的只是暂时绑定到一个服务来查询或控制它,那么使用就没有意义了,这项服务在你完成之后会继续存在是合理的. .对于这些情况,绑定用于建立连接,并且应该使用startService()和stopService()(或stopSelf()在某些情况下)管理服务的生命周期.
谷歌在绑定服务的文档中清楚地描述了后一种情况的一个常见例子:
"...例如,音乐播放器可能会发现允许其服务无限期运行并提供绑定很有用.这样,活动可以启动服务播放一些音乐,即使用户离开,音乐也会继续播放然后,当用户返回应用程序时,活动可以绑定到服务以重新获得对回放的控制."
总的来说,我会说使用该标志确实区分了两种非常不同类型的用例,而不是同一事物的微调版本.
| 归档时间: |
|
| 查看次数: |
15051 次 |
| 最近记录: |