- 浏览: 20621 次
文章分类
最新评论
(1)
一个Activity和一个Service绑定在一起,一起运行,共同消亡。
如果要想进行绑定的话,需要一个ServiceConnection接口,接口定义了2个方法,
onServiceConnected(ComponentName,IBinder) 当与一个Service建立连接的时候调用.
onServiceDisConnected(ComponentName) 当与一个Service取消连接的时候调用.
注意在连接的时候有个叫做IBinder接口的对象.
ServiceConnection接口主要的功能是当一个Activity程序与Service建立连接之后,可以通过ServiceConnection接口执行Service连接(或取消)连接的处理操作,在Activity连接到Service程序上之后,会触发Service类中的onBind()方法,在此方法中要返回一个android.os.IBinder接口的对象。
ServiceConnection con=new ServiceConnection(){
public void onServiceConnected(ComponentName,IBinder){}
public void onServiceDisConnected(ComponentName)()
};
context.bindService(new Intent(context,MyService.class),con,Context.BIND_AUTO_CREATE);
context.unbindService(con);
此时Activity程序编写完成.
第一步:启动startService后,会onCreate,再onStartCommand
第二步:调用bindService后,会onBind,onServiceConnected.
如果不启动而直接进行bindService,会onCreate,onBind,onServiceConnected.再退出程序(或调用unbindService),会onUnbind,onDestroy.
以上会有一个bug,因为如果没有服务bindService,而调用了unbindService就会出现问题。所以在解除绑定之前必须加一个判断,判断一个Activity是否和一个Service绑定在了一起,如果绑定在了一起才可以使用unbindService()方法解除绑定.做法如下:
(2)Activity中定义一个
private IBinder binder;当onServiceConnected的时候,用其参数IBinder对象去实例化它。然后判断其if(binder!=null){unbindService(con);binder=null}
class MyService extend Service(){
private IBinder bind=new Binder();
public IBinder onBind(Intent intent){
return bind;//传给ServiceConnection的onServiceConnected的方法,变成其参数了。然后赋给Activity的属性IBinder做为一个判断是否调用过bindService去启动了服务。
}
}
一个Activity和一个Service绑定在一起,一起运行,共同消亡。
如果要想进行绑定的话,需要一个ServiceConnection接口,接口定义了2个方法,
onServiceConnected(ComponentName,IBinder) 当与一个Service建立连接的时候调用.
onServiceDisConnected(ComponentName) 当与一个Service取消连接的时候调用.
注意在连接的时候有个叫做IBinder接口的对象.
ServiceConnection接口主要的功能是当一个Activity程序与Service建立连接之后,可以通过ServiceConnection接口执行Service连接(或取消)连接的处理操作,在Activity连接到Service程序上之后,会触发Service类中的onBind()方法,在此方法中要返回一个android.os.IBinder接口的对象。
ServiceConnection con=new ServiceConnection(){
public void onServiceConnected(ComponentName,IBinder){}
public void onServiceDisConnected(ComponentName)()
};
context.bindService(new Intent(context,MyService.class),con,Context.BIND_AUTO_CREATE);
context.unbindService(con);
此时Activity程序编写完成.
第一步:启动startService后,会onCreate,再onStartCommand
第二步:调用bindService后,会onBind,onServiceConnected.
如果不启动而直接进行bindService,会onCreate,onBind,onServiceConnected.再退出程序(或调用unbindService),会onUnbind,onDestroy.
以上会有一个bug,因为如果没有服务bindService,而调用了unbindService就会出现问题。所以在解除绑定之前必须加一个判断,判断一个Activity是否和一个Service绑定在了一起,如果绑定在了一起才可以使用unbindService()方法解除绑定.做法如下:
(2)Activity中定义一个
private IBinder binder;当onServiceConnected的时候,用其参数IBinder对象去实例化它。然后判断其if(binder!=null){unbindService(con);binder=null}
class MyService extend Service(){
private IBinder bind=new Binder();
public IBinder onBind(Intent intent){
return bind;//传给ServiceConnection的onServiceConnected的方法,变成其参数了。然后赋给Activity的属性IBinder做为一个判断是否调用过bindService去启动了服务。
}
}
- BindService.zip (615.5 KB)
- 下载次数: 2
发表评论
-
android startActivityForResult
2012-12-25 09:02 529Bashboard.java Intent i = new I ... -
android 实现左右滑动指引效果
2012-12-18 17:29 642见附录源码 ViewPager 的使用 -
android listview 点击listview下面 显示更多
2012-12-18 15:05 1249见附件源码. 看一遍就懂了,很简单的例子. -
android listview 上拉刷新
2012-12-18 13:45 739具体源码见,附件下载。 这里列出关键性思路: 1.先定义一个 ... -
android post get
2012-12-18 09:46 691//post HttpClient client=new De ... -
android listview
2012-12-17 17:32 0android:drawSelectorOnTop=" ... -
android 实用方法
2012-12-17 15:28 0URLUtil.isValidUrl(String blogU ... -
android 分隔线
2012-12-17 15:27 867android 分隔线 1.用View 配置文件 <V ... -
android textview
2012-12-17 11:25 618textview 标题style设置. <style ... -
android edittext 边框 源码实现
2012-12-17 10:34 1207android经典edittext选中样式是,黄色,不选中是灰 ... -
android 布局边框
2012-12-17 09:25 794<RelativeLayout androi ... -
android 返回键 事件
2012-12-17 08:58 765//startActivityForResult()情况的In ... -
android 文字描边
2012-12-14 17:17 1931文字描边 android:shadowColor=" ... -
android 渐变背景
2012-12-14 15:43 1253<?xml version="1.0" ... -
android button 自定义
2012-12-14 14:58 631wp_button.xml(\drawable目录下建个) ... -
android application
2012-12-14 14:03 571android 开发中共享全局 ... -
android windowSoftInputMode
2012-12-14 11:42 530android:windowSoftInputMode属性 & ... -
android 屏幕
2012-12-07 10:33 660术语和概念 Screen size(屏幕尺寸) 指手机实际的物 ... -
android 国际化 屏幕适配 样式和主题
2012-11-23 15:19 1262(1)国际化 values文件夹:如果没找到语言环境对应的默认 ... -
android 自定义 checkbox
2012-11-01 10:33 724<?xml version="1.0" ...
相关推荐
Android绑定Service进行通信
一个关于如何以绑定方式启动service的Androiddemo
适合新手入门的bindService小Demo.
主要演示android的的service如何绑定的完整代码
2、针对对普通类绑定service进行测试 3、普通类可以绑定service,但是需要activity传入一个Contex参数 4、该测试可以将业务代码和activity或者service分离,实现程序更好的结构,提高代码可读性 5、欢迎大家一起讨论...
android播放器绑定Service,小程序,交流用
_android绑定服务进程间(_android binding service process).doc
Android Service服务启动与绑定用法测试,这个android源码演示了如何启动和停止指定的android系统服务,如何Bind Server绑定服务和如何unBind Server解绑服务,并使用NotificationManager来弹出消息处理对话框。
通常我们使用Service都要和它通信,当想要与Service通信的时候,那么Service要处于绑定状态的。然后客户端可以拿到一个Binder与服务端进行通信,这个过程是很自然的。 那你真的了解过Service的绑定过程吗?为什么...
NULL 博文链接:https://zhanhao.iteye.com/blog/1120410
Android之Service实现比较大小
android 绑定服务客户端,另一个服务端也可以我的资源里。
1. 使用了BindService绑定Service。 2. 使用Boardcast,Service发送广播通知Activity更新进度条进度,歌曲状态更新等。
代码中包含同个应用程序间Service的...Server工程为Service所在的应用程序,Client工程为要绑定Service的应用程序,例子简单易懂,可配合http://blog.csdn.net/u013524014/article/details/50314477 中的介绍帮助理解。
使用AIDL实现Service与Client绑定后的双向调用,Client在绑定Service时传入自己的Binder ,Service使用这个Binder实现调用Client的方法
Android动画和service绑定注册,更好的帮你了解Android动画和service绑定注册的方式。
Service的生命周期 绑定Activity和Service 在BroadcastReceiver中启动Service 系统服务 时间服务 在线程中更新GUI组件 AIDL服务 在AIDL服务中传递复杂的数据
本章内容服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样...
这是一个简单的围绕Android service activity来进行服务绑定的测试源码,比如 进行开始服务、关闭服务、绑定服务和解绑服务的测试,在android虚拟机上的运行效果,请参见下图所示。这是比较基础的android初级例子,...