这是我Activity
中的代码。发起意图,然后是连接,对吧?
hello_service = new Intent(this, HelloService.class);
hello_service_conn = new HelloServiceConnection();
bindService( hello_service, hello_service_conn, Context.BIND_AUTO_CREATE);
但我的问题是......连接内部是什么?
class HelloServiceConnection implements ServiceConnection {
public void onServiceConnected(ComponentName className,IBinder boundService ) {
}
public void onServiceDisconnected(ComponentName className) {
}
};
有人可以告诉我我在 onServiceConnected 和 onServiceDisconnected 中添加了哪些代码?
我只想要一个基本连接,以便我的Activity
和Service
可以互相交谈。
编辑:我找到了一个很好的教程,我实际上可以关闭这个问题,除非有人想回答。 http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/
答案 0 :(得分:16)
我想指出,如果您按照谷歌提供的服务示例,那么您的服务将泄露内存,请参阅此章如何正确地执行此操作(并投票支持相关的Google错误)
http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android
答案 1 :(得分:5)
应避免从活动绑定到服务,因为它会在活动配置发生变化时导致探测(例如,如果设备被轮换,活动将从头开始重新创建,并且必须重新创建绑定)。
请参阅下面有关stackoverflow的帖子中Commonsware的评论
Communicate with Activity from Service (LocalService) - Android Best Practices
答案 2 :(得分:1)
要将服务连接到活动,您在ServiceConnection实现中编写的所有内容都是:
@Override
public void onServiceDisconnected(ComponentName name) {
mServiceBound = false;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyBinder myBinder = (MyBinder) service;
mBoundService = myBinder.getService();
mServiceBound = true;
}
这里mBoundService是绑定服务的对象。看看这个Bound Service Example。