`
寻梦者
  • 浏览: 637661 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中的service

阅读更多

 

 

当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用。

 

Activity能进行绑定得益于Service的接口。为了支持Service的绑定,实现onBind方法如下所示:

 

private final IBinder binder = new MyBinder();

 

@Override

public IBinder onBind(Intent intent) {

return binder;

}

 

public class MyBinder extends Binder {

MyService getService()

{

return MyService.this;

}

}

 

ServiceActivity的连接可以用ServiceConnection来实现。你需要实现一个新的ServiceConnection,重写onServiceConnectedonServiceDisconnected方法,一旦连接建立,你就能得到Service实例的引用。

 

// Reference to the service

private MyService serviceBinder;

 

// Handles the connection between the service and activity

private ServiceConnection mConnection = new ServiceConnection()

{

public void onServiceConnected(ComponentName className, IBinder service) {

// Called when the connection is made.

serviceBinder = ((MyService.MyBinder)service).getService();

}

 

public void onServiceDisconnected(ComponentName className) {

// Received when the service unexpectedly disconnects.

serviceBinder = null;

}

};

 

执行绑定,调用bindService方法,传入一个选择了要绑定的ServiceIntent(显式或隐式)和一个你实现了的ServiceConnection实例,如下的框架代码所示:

 

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

// Bind to the service

Intent bindIntent = new Intent(MyActivity.this, MyService.class);

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);

}

 

一旦Service对象找到,通过onServiceConnected处理函数中获得serviceBinder对象就能得到它的公共方法和属性。

 

Android应用程序一般不共享内存,但在有些时候,你的应用程序可能想要与其它的应用程序中运行的Service交互。

 

你可以使用广播Intent或者通过用于启动ServiceIntent中的Bundle来达到与运行在其它进程中的Service交互的目的。如果你需要更加紧密的连接的话,你可以使用AIDLService跨越程序边界来实现绑定。AIDL定义了系统级别的Service的接口,来允许Android跨越进程边界传递对象。AIDL的定义将在第11章中覆盖。

 

分享到:
评论

相关推荐

    Android中Service源码下载

    本资源提供了关于Android中Service的源码,重点展示了Service的生命周期以及如何在Service中播放音乐。通过分析和学习这个`ServiceTest`项目,我们可以深入理解Service的工作原理和用法。 首先,Service的生命周期...

    Android中Service组件的使用

    之后,客户端就可以通过这个对象调用Service中的方法了。连接Service的过程如下: ```java Intent intent = new Intent(this, MyService.class); bindService(intent, new ServiceConnection() { @Override public...

    android中service组件自我学习练习

    在Android应用开发中,Service组件是四大组件之一,它用于在后台执行长时间运行的操作,而无需与用户交互。Service可以在用户界面关闭或者应用被切换到后台时仍然保持运行状态,这使得Service成为处理音乐播放、后台...

    Android中Service完全解析(上)

    Intent常用于在startService()中传递命令,而Binder接口则允许直接调用Service中的方法,实现更复杂的数据交换。 为了确保Service的正常运行,开发者需要注意内存管理和线程处理。由于Service运行在主线程中,长...

    Android中service基本用法,生命周期1

    startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...

    Android中Service的全面总结

    主要全面总结了Android中Service的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android中Service的作用与定义.pdf

    为避免这种情况,通常建议在Service中使用IntentService或HandlerThread来处理后台任务,确保操作在单独的工作线程中执行。 6. Service的启动与停止 - 启动服务:使用startService()启动Service,通过stopService...

    Android中Service的手动、自动以及特殊条件下的重启

    在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,不与用户交互。本篇文章将深入探讨Service的手动重启、自动重启以及在特殊条件下的重启策略,帮助开发者更好地理解和管理Service的...

    Android 中service 开发实例

    在Android应用开发中,Service是四大组件之一,它在后台执行长时间运行的操作,不与用户交互。本教程将深入探讨Android Service的开发实例,帮助开发者理解如何在Android应用程序中使用Service来实现后台任务。 ...

    Android中Service和BocardcastReceiver举例

    在Android应用开发中,Service和BroadcastReceiver是两个非常重要的组件,它们各自承担着不同的职责,但又能在某些场景下相互配合工作。本示例将详细解释如何在Android中使用Service和BroadcastReceiver来实现手机...

    Android中service基本用法,生命周期2

    startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...

    Android Service Demo

    在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,不与用户界面直接交互。"Android Service Demo"是一个示例项目,它展示了如何在Android应用中使用Service,尤其是结合AIDL(Android ...

    Android中Service的生命周期解析.pdf

    在Android系统中,Service是应用程序框架的一个关键组件,它允许应用程序在后台运行,即使用户界面不在活动状态。Service主要用于执行长时间运行的操作,如播放音乐、处理网络交易等,而不需直接与用户交互。本篇...

    在Android中Service概述和AIDL例子

    在Android系统中,Service是一种重要的组件,用于在后台执行长时间运行的操作或与远程进程进行交互。Service不提供用户界面,但可以与其他组件(如Activity)交互。本篇将深入探讨Service的基本概念、生命周期以及...

    Android中Service(后台服务)详解

    (1).Service可以说是一个在后台运行的Activity。它不是一个单独的进程,它只需要应用告诉它要在后台做什么就可以了。 (2).它要是实现和用户的交互的话需要通过通知栏或者是通过发送广播,UI去接收显示。 (3).它的...

    浅谈Android中Service的注册方式及使用

    在Android中,Service的注册方式有多种,从Service的启动方式上,可以将Service分为Started Service和Bound Service。无论哪种具体的Service启动类型,都是通过继承Service基类自定义而来。在使用Service时,要想...

    Android中Service生命周期演示案例的任务要求.pdf

    - 在Service中进行长时间操作时,考虑使用IntentService,以避免阻塞主线程。 通过这个案例,开发者不仅能够理解Service的基本使用,还能掌握如何在不同生命周期方法中进行操作,以及如何利用广播进行服务和活动...

    Android中Service和Activity相互通信示例代码

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,本文就给大家详细介绍了关于Android中Service和Activity相互...

Global site tag (gtag.js) - Google Analytics