浏览 31677 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-04
最后修改:2010-08-04
The service will at this point continue running until Context.stopService() or stopSelf() is called. Note that multiple calls to Context.startService() do not nest (though they do result in multiple corresponding calls to onStartCommand()), so no matter how many times it is started a service will be stopped once Context.stopService() or stopSelf() is called 上面是android的HP上写的关于Service周期的一段话,是说,Service在开始以后,除非调用了Context.stopService()或者stopSelf(),否则不会停止。当然如果内存不足,系统可能自动杀死Service。 下面是关于ServiceConnection接口的: private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub mService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub mService = IBindService.Stub.asInterface(service); } }; 貌似现在的主流写法是这样。下面的代码的bindService method执行之后会自动调用上面ServiceConnection接口里的onServiceConnected method Intent intent = new Intent(IBindService.class.getName()); bindService(intent, conn, BIND_AUTO_CREATE); 有人会想,如果执行unbindService之后不就自动调用ServiceConnection接口里的onServiceDisconnected method了吗。 其实不然,查看api,你会发现,ServiceConnection接口里德onServiceDisconnected method只会在Service被停止或者被系统杀死以后调用。 也就是说你执行unbindService 只是告诉系统你已经和这个服务没有关系了。系统在内存不足的时候可以优先杀死这个服务而已。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-08-10
如果没有startService,而调用stopservice不会出错.
如果没有bindservice而调用unbindservice就会出错. 还有在TabActivity里面,如果每个Tab都是Intent的话,启动了这个Tabactivity里,如何Bindservice呢? maintabactivity->>tab1activity,tab2activity 在tab1activity里无法bindservice,不知道这个如何处理呢? 似乎又和Tab有关了,上面的maintabactivity都监听不到onkeydown事件..... |
|
返回顶楼 | |
发表时间:2010-08-10
phenom 写道 如果没有startService,而调用stopservice不会出错.
如果没有bindservice而调用unbindservice就会出错. 还有在TabActivity里面,如果每个Tab都是Intent的话,启动了这个Tabactivity里,如何Bindservice呢? maintabactivity->>tab1activity,tab2activity 在tab1activity里无法bindservice,不知道这个如何处理呢? 似乎又和Tab有关了,上面的maintabactivity都监听不到onkeydown事件..... TabActivity 没有用过,汗颜。 不过,我觉得可以这样做: 对于每个不同的tab,在onServiceConnected()里有不同的初始化设定,例如一些组件的注册。通过if或者switch进行判断。 切换tab时,在onTabChanged()里,unbindService之后再bindService。 |
|
返回顶楼 | |
发表时间:2010-09-03
zk216fire 写道
phenom 写道
如果没有startService,而调用stopservice不会出错.
如果没有bindservice而调用unbindservice就会出错. 还有在TabActivity里面,如果每个Tab都是Intent的话,启动了这个Tabactivity里,如何Bindservice呢? maintabactivity->>tab1activity,tab2activity 在tab1activity里无法bindservice,不知道这个如何处理呢? 似乎又和Tab有关了,上面的maintabactivity都监听不到onkeydown事件..... TabActivity 没有用过,汗颜。 不过,我觉得可以这样做: 对于每个不同的tab,在onServiceConnected()里有不同的初始化设定,例如一些组件的注册。通过if或者switch进行判断。 切换tab时,在onTabChanged()里,unbindService之后再bindService。
|
|
返回顶楼 | |