Activity和service的两种绑定方法
来源:互联网 发布:万方数据库账号密码 编辑:程序博客网 时间:2024/05/29 04:26
要知道如果调用函数startService方法,那么即使你的程序退出了,但是Service依然运行在后台;也就是说此时想要停止service必须调用stopService方法。 现在我们把Activity与Service绑定在一起,那就是Service要随着程序的退出而终止,此时调用的方法为bindService方法,方法如下: A. 编写需要运行在后台的类继承自android.app.Service。 public class MyService extends Service { //服务生命周期 创建,开始,销毁 /** * 创建 */ @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); Log.d("info", "Service Create"); } /* * 开始 * (non-Javadoc) * @see android.app.Service#onStart(android.content.Intent, int) */ @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); Log.d("info", "Service Start"); } /** * 销毁 */ @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d("info", "Service Destroy"); } /** * 当Service与Activity成功绑定时调用这个方法(non-Javadoc) * @see android.app.Service#onBind(android.content.Intent) */ @Override public IBinder onBind(Intent arg0) { Log.d("info","Service Bind Success"); return null; } /** * 重新绑定 */ @Override public void onRebind(Intent intent) { super.onRebind(intent); Log.d("info","Service ReBind Success"); } /** * 取消绑定 */ @Override public boolean onUnbind(Intent intent) { Log.d("info","Service Unbind Success"); return super.onUnbind(intent); } } B. 在AndroidManifest.xml中配置<service>标签 <service android:name=".MyService" android:enabled="true" ></service> C. 绑定服务: (1) 通过使用Activity的bindService(Intent service,ServiceConnection conn,int flags)完成 由该方法的第二个参数可以确定第二步要做什么 (2) 编写类实现ServiceConnection 接口 class MyServiceConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName arg0, IBinder arg1) { Log.d("info", "Service Connection Success"); //成功连接服务,该方法被执行。在该方法中可以通过IBinder对象取得onBind方法的返回值,一般通过向下转型 } @Override public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub Log.d("info", "Service Connection Filed"); //连接失败执行 } } (3)使用 class BtnClick implements OnClickListener { @Override public void onClick(View arg0) { Intent intent = new Intent(Main.this,MyService.class); MyServiceConnection myServiceConnection = new MyServiceConnection(); switch (arg0.getId()) { case R.id.btnStart: Main.this.startService(intent); break; case R.id.btnStop: Main.this.stopService(intent); break; case R.id.btnBind: Main.this.bindService(intent,myServiceConnection ,Context.BIND_AUTO_CREATE); break; case R.id.btnUnBind: //ServiceConnection必须是全局变量否则此处报错 Main.this.unbindService(myServiceConnection ); break; default: break; } } } ***开启service有两种方法,一种startService,另一种是bindService。如果两种方法同时使用的话,不论是先启用startService先还是启用bindService先,都需要先等待解除绑定服务再能调用stopService方法,程序才会自动回调destroy。不论是先启用startService先还是启用bindService先,然后再退出程序,以startService启动的服务忍然需要当程序再次启动后调用stopService停止服务。
1 0
- Activity和service的两种绑定方法
- 绑定Activity和Service
- Activity和Service绑定
- Activity 和Service绑定
- Service 和 Activity 绑定
- Activity 和Service绑定
- Activity 和Service绑定
- 绑定Activity和Service
- Activity 和Service绑定
- Activity 和Service绑定
- Activity与Service的启动和绑定
- service使用handler与Activity沟通的两种方法
- Activity绑定界面 两种方法
- service和activity绑定步骤
- activity启动service的两种方式
- android89--Activity怎么和service绑定,怎么在activity中启动自己对应的service
- Activity怎么和service绑定,怎么在activity中启动自己对应的service
- 使用绑定服务并且与Activity通信进行UI更新的两种方法
- android 不初始化...一个的问题,getLoaderManager ().initLoader LoaderManager
- Linux 信号,僵尸进程,(面试)
- Ubuntu12.04 远程桌面连接说明
- Medium 162题 Find Peak Element
- HTML+CSS基础 a hover设置所有,鼠标移动到超链接文本处超链接变小
- Activity和service的两种绑定方法
- js中实现封装
- servlet3.1规范: 第10章 Web应用
- Linux网卡驱动程序详解
- [MSSQL]SQL Server 2008 收缩日志 清空删除大日志文件
- HTML+CSS基础 border-bottom在指定p标签的文本下方添加双细实线
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-浏览器对象模型
- self-sizing-in-UICollectionView
- 谷歌浏览器的DHC