Activity和Service绑定后,可以方便Activity随时调用对应的Service里面的方法

绑定代码如下

Activity类代码:

  1. <span style="font-size:16px;">package com.fox.Activity;
  2. import com.fox.Activity.service.Service1;
  3. import android.app.Activity;
  4. import android.content.ComponentName;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.ServiceConnection;
  8. import android.os.Bundle;
  9. import android.os.IBinder;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.widget.Button;
  13. import android.widget.Toast;
  14. public class Activity1 extends Activity {
  15. private Button btn1 = null;
  16. private static String LOG="mp3";
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. btn1 = (Button) findViewById(R.id.button1);
  22. btn1.setOnClickListener(new btn1ClickListener());
  23. //开始绑定
  24. Intent intent = new Intent(Activity1.this,Service1.class);
  25. bindService(intent, conn, Context.BIND_AUTO_CREATE);
  26. }
  27. private Service1 myservice = null;//绑定的service对象
  28. //连接对象,重写OnserviceDisconnected和OnserviceConnected方法
  29. public ServiceConnection conn= new ServiceConnection() {
  30. @Override
  31. public void onServiceDisconnected(ComponentName name) {
  32. Log.i(LOG, "onServiceDisconnected>>>>>>>>");
  33. myservice = null;
  34. }
  35. @Override
  36. public void onServiceConnected(ComponentName name, IBinder service) {
  37. Log.i(LOG, "onServiceConnected>>>>>>>>");
  38. myservice = ((Service1.MyBinder)service).getService();
  39. Log.i(LOG, myservice+">>>>>>>>");
  40. }
  41. };
  42. class btn1ClickListener implements View.OnClickListener {
  43. @Override
  44. public void onClick(View v) {
  45. unbindService(conn);
  46. }
  47. }
  48. }</span>

Service类代码:

  1. <span style="font-size:16px;">package com.fox.Activity.service;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.Binder;
  5. import android.os.IBinder;
  6. import android.util.Log;
  7. public class Service1  extends Service{
  8. private final IBinder binder = new MyBinder();
  9. private static final String LOG="mp3";
  10. @Override
  11. public IBinder onBind(Intent intent) {
  12. Log.i(LOG, "onBind............");
  13. return binder;
  14. }
  15. /**
  16. * 该类是获得Service对象
  17. * @author Administrator
  18. *
  19. */
  20. public class MyBinder extends Binder{
  21. public Service1 getService(){
  22. return Service1.this;
  23. }
  24. }
  25. @Override
  26. public void onCreate() {
  27. Log.i(LOG, "oncreate............");
  28. super.onCreate();
  29. }
  30. @Override
  31. public void onStart(Intent intent, int startId) {
  32. Log.i(LOG, "onstart............");
  33. super.onStart(intent, startId);
  34. }
  35. @Override
  36. public int onStartCommand(Intent intent, int flags, int startId) {
  37. Log.i(LOG, "onstartcommand............");
  38. return super.onStartCommand(intent, flags, startId);
  39. }
  40. @Override
  41. public void onDestroy() {
  42. Log.i(LOG, "ondestory............");
  43. super.onDestroy();
  44. }
  45. }
  46. </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绑定的更多相关文章

  1. 8.1.2 绑定Activity和Service

    8.1.2 绑定Activity和Service 2010-06-21 16:57 李宁 中国水利水电出版社 字号:T | T <Android/OPhone开发完全讲义>第8章Andro ...

  2. android 47 service绑定

    如果一个service已经启动了,activity和service绑定了在解除邦定,则这个service不会销毁,因为这个service不是这个Activity创建的. service生命周期: Ac ...

  3. activity与service进程内通信

    package com.example.binbin.testbinder; import android.app.Service; import android.content.Intent; im ...

  4. Activity Fragment Service生命周期图

    service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径: A started service 被开启的service通过其他组件调用 startService()被创建. 这种 ...

  5. Android activity和service的生命周期对比

    1Activity生命周期 七个方法 1. void onCreate(Bundle savedInstanceState) 当Activity被第首次加载时执行.我们新启动一个程序的时候其主窗体的o ...

  6. Activity与Service进行数据交互

    Android启动Service有两种方法,一种是startService,一种是bindService.生命周期如下: 执行startService时,调用者如果没有stopService,Serv ...

  7. Activity和Service的生命周期(图)

    1.Activity的生命周期 情形一.一个单独的Activity的正常的生命过程是这样的:onCreate->onStart->onPause->onStop->onDest ...

  8. Activity与Service通信(不同进程之间)

    使用Messenger 上面的方法只能在同一个进程里才能用,如果要与另外一个进程的Service进行通信,则可以用Messenger. 其实实现IPC(Inter-Process Communicat ...

  9. Android之Activity与Service通信

    一.当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现. 当一个Activity绑定到一个Service上时,它负责维护Service实例的引用 ...

随机推荐

  1. 【LeetCode OJ】Sum Root to Leaf Numbers

    # Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self ...

  2. CoreData的使用入门到精通

    源码下载地址: http://download.csdn.net/download/huntaiji/6664567 一,创建项目文件--选择Empty Application  起名:CoreDat ...

  3. Fix a corrupted user profile

    Fix a corrupted user profile Applies to Windows 7 Your user profile is a collection of settings that ...

  4. Unity3D ShaderLab 基础的高光实现

    Unity3D ShaderLab 基础的高光实现 关于高光: 在一个物体表面的高光属性就是为了描述它是如何表现光泽.这种类型的效果在着色器的世界中通常称为视点相关效果. 之所以这样说,是因为为了实现 ...

  5. Highcharts入门+Highcharts基础教程,【非常值得学习的资料】

    http://www.hcharts.cn/docs/index.php?doc=index Highcharts入门章节目录 Highcharts简介 Highcharts下载与使用 Highcha ...

  6. Linux系统入门学习:在CentOS上安装phpMyAdmin

    问题:我正在CentOS上运行一个MySQL/MariaDB服务,并且我想要通过网络接口来用phpMyAdmin来管理数据库.在CentOS上安装phpMyAdmin的最佳方法是什么? phpMyAd ...

  7. Java-->利用文件指针分割文件

    --> 大体上和字节流分割的方式没什么区别,只是加入文件指针确定要开始分割的位置... package com.dragon.java.splitmp3; import java.io.File ...

  8. ZOJ 1016 Parencodings

    原题链接 题目大意:有两串数字P和W.数组P中,数字P[i]表示第i个右括号之前的左括号个数.数组W中,数字W[i]表示在第i个右括号和与它匹配的左括号之间的右括号的个数(包括本身).给出一个数组P, ...

  9. 优秀HTML5活动页面

    一个好的手机活动宣传 更能让人分享 传播是爆炸性的 下面是我平时看到一些好的微信活动宣传页面  分享给大家 其中用到的技术 常做微信活动 专题页面的人 可以看看大神们是怎么做的  这样到自己做的时候 ...

  10. 深入理解javascript的闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...