Code Bye

有个关于Service的问题想问问

1.在Application里面bindService,来获取Service类onbind返回的服务端server,并保存在Application中,作为静态全局变量,初始值为null。
2.在MainActivity里面new了一个Fragment,在Fragment的onCreateView函数中,调用Application中的静态变量server来获取服务,这时说我server还是null。

我的问题就是:为什么我bindservice是在Application的onCreate里面的,运行到Fragment的onCreateView的时候为什么还没获取到Service的onbind返回的服务端呢?? 这种情况下有什么解决办法?我觉得令UI线程睡眠等待bindsevice确确实实拿到server不现实吧。重点还是像知道为什么会这么迟才拿到server回来。(ps:我的Service是本地服务)

坐等大神出现
没有写代码实验过,但是service启动是异步的,你所说的情况很有可能发生。UI线程中去睡眠等待是绝对不可取的,建议加一个splash界面,等service绑定完成后再启动fragment
引用 2 楼 yexianghu 的回复:

没有写代码实验过,但是service启动是异步的,你所说的情况很有可能发生。UI线程中去睡眠等待是绝对不可取的,建议加一个splash界面,等service绑定完成后再启动fragment

我代码本身也是有Splash界面的,毕竟除了service之外,还有数据库连接等要处理,所以有Splash界面的。但是Service的绑定还是慢于Fragment一步。我查资料,有的资料说本地服务不像远程服务,并不是开在一个新进程上,好像是依附在UI线程上?不知对不对了= =  还有其他解决办法么??

40分
引用 3 楼 lin810921141 的回复:
Quote: 引用 2 楼 yexianghu 的回复:

没有写代码实验过,但是service启动是异步的,你所说的情况很有可能发生。UI线程中去睡眠等待是绝对不可取的,建议加一个splash界面,等service绑定完成后再启动fragment

我代码本身也是有Splash界面的,毕竟除了service之外,还有数据库连接等要处理,所以有Splash界面的。但是Service的绑定还是慢于Fragment一步。我查资料,有的资料说本地服务不像远程服务,并不是开在一个新进程上,好像是依附在UI线程上?不知对不对了= =  还有其他解决办法么??

既然有splash,可以等到service绑定成功后再启动Fragment吗?
service都依附与ui线程,只是根据你设置不同依附与不同进程的ui线程而已,因此这个问题跟是否是本地服务关系不大


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有个关于Service的问题想问问