Activity和Service绑定
Activity和Service绑定后,可以方便Activity随时调用对应的Service里面的方法
绑定代码如下
Activity类代码:
- <span style="font-size:16px;">package com.fox.Activity;
- import com.fox.Activity.service.Service1;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.os.Bundle;
- import android.os.IBinder;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.Toast;
- public class Activity1 extends Activity {
- private Button btn1 = null;
- private static String LOG="mp3";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn1 = (Button) findViewById(R.id.button1);
- btn1.setOnClickListener(new btn1ClickListener());
- //开始绑定
- Intent intent = new Intent(Activity1.this,Service1.class);
- bindService(intent, conn, Context.BIND_AUTO_CREATE);
- }
- private Service1 myservice = null;//绑定的service对象
- //连接对象,重写OnserviceDisconnected和OnserviceConnected方法
- public ServiceConnection conn= new ServiceConnection() {
- @Override
- public void onServiceDisconnected(ComponentName name) {
- Log.i(LOG, "onServiceDisconnected>>>>>>>>");
- myservice = null;
- }
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- Log.i(LOG, "onServiceConnected>>>>>>>>");
- myservice = ((Service1.MyBinder)service).getService();
- Log.i(LOG, myservice+">>>>>>>>");
- }
- };
- class btn1ClickListener implements View.OnClickListener {
- @Override
- public void onClick(View v) {
- unbindService(conn);
- }
- }
- }</span>
Service类代码:
- <span style="font-size:16px;">package com.fox.Activity.service;
- import android.app.Service;
- import android.content.Intent;
- import android.os.Binder;
- import android.os.IBinder;
- import android.util.Log;
- public class Service1 extends Service{
- private final IBinder binder = new MyBinder();
- private static final String LOG="mp3";
- @Override
- public IBinder onBind(Intent intent) {
- Log.i(LOG, "onBind............");
- return binder;
- }
- /**
- * 该类是获得Service对象
- * @author Administrator
- *
- */
- public class MyBinder extends Binder{
- public Service1 getService(){
- return Service1.this;
- }
- }
- @Override
- public void onCreate() {
- Log.i(LOG, "oncreate............");
- super.onCreate();
- }
- @Override
- public void onStart(Intent intent, int startId) {
- Log.i(LOG, "onstart............");
- super.onStart(intent, startId);
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.i(LOG, "onstartcommand............");
- return super.onStartCommand(intent, flags, startId);
- }
- @Override
- public void onDestroy() {
- Log.i(LOG, "ondestory............");
- super.onDestroy();
- }
- }
- </span>
开始绑定调用方法A.bindService()--->S.onCreate--->S.onBind---->>A.onServiceConnected绑定成功,并获得Service对象
结束绑定按钮的监听事件-->>unbindService(conn)关闭连接对象-->>S.destory()销毁该service
注:结束绑定时是不会调用onServiceDisconnected()方法的;
http://blog.csdn.net/huqingwei0824/article/details/6869622
Activity和Service绑定的更多相关文章
- 8.1.2 绑定Activity和Service
8.1.2 绑定Activity和Service 2010-06-21 16:57 李宁 中国水利水电出版社 字号:T | T <Android/OPhone开发完全讲义>第8章Andro ...
- android 47 service绑定
如果一个service已经启动了,activity和service绑定了在解除邦定,则这个service不会销毁,因为这个service不是这个Activity创建的. service生命周期: Ac ...
- activity与service进程内通信
package com.example.binbin.testbinder; import android.app.Service; import android.content.Intent; im ...
- Activity Fragment Service生命周期图
service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径: A started service 被开启的service通过其他组件调用 startService()被创建. 这种 ...
- Android activity和service的生命周期对比
1Activity生命周期 七个方法 1. void onCreate(Bundle savedInstanceState) 当Activity被第首次加载时执行.我们新启动一个程序的时候其主窗体的o ...
- Activity与Service进行数据交互
Android启动Service有两种方法,一种是startService,一种是bindService.生命周期如下: 执行startService时,调用者如果没有stopService,Serv ...
- Activity和Service的生命周期(图)
1.Activity的生命周期 情形一.一个单独的Activity的正常的生命过程是这样的:onCreate->onStart->onPause->onStop->onDest ...
- Activity与Service通信(不同进程之间)
使用Messenger 上面的方法只能在同一个进程里才能用,如果要与另外一个进程的Service进行通信,则可以用Messenger. 其实实现IPC(Inter-Process Communicat ...
- Android之Activity与Service通信
一.当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现. 当一个Activity绑定到一个Service上时,它负责维护Service实例的引用 ...
随机推荐
- 【LeetCode OJ】LRU Cache
Problem Link: http://oj.leetcode.com/problems/lru-cache/ Long long ago, I had a post for implementin ...
- JQuery源码分析(七)
了解jQuery对DOM进行遍历背后的工作机制,这样可以在编写代码时有意识地避免一些不必要的重复操作,从而提升代码的性能. 关于jQuery对象的包装 var $aaron = $("aar ...
- ERP系统上传文档信息下载(十八)
下载的公用方法: /// <summary> /// 下载文档 /// </summary> /// <param name="TableName"& ...
- Android库Volley的使用介绍
Android Volley 是Google开发的一个网络lib,可以让你更加简单并且快速的访问网络数据.Volley库的网络请求都是异步的,你不必担心异步处理问题. Volley的优点: 请求队列和 ...
- iOS事件:触摸事件.运动事件.远程控制事件
iOS中,提供了事件处理:触摸事件,运动事件,远程控制事件.这很大得方便程序猿的工作. 这里先简单做个介绍: // // ViewController.m // demo // // Created ...
- 求助 WPF ListViewItem样式问题
求助 WPF ListViewItem样式问题 .NET 开发 > Windows Presentation Foundation Вопрос 0 Нужно войти <Style ...
- explicit用法
explicit用来防止由构造函数定义的隐式转换. 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. 例如: class things { ...
- java学习第十天
第十二次课 目标 一维数组(创建访问) 一.概念与特点 1.概念 相同数据类型的有序集合[] 数组名: 容器的名字 元素: 下标变量,数组名[下标] 长度: length 下标: 位置.索引 ...
- Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成 ...
- phpcms站---去除域名绑定目录中的HTML
原网址:http://www.xker.com/page/e2014/1207/148536.html 打开 \install_package 打开 \caches\configs 目录下的 syst ...