`

获取Service实例

 
阅读更多

//工具接口

public interface ServiceCreator {

    Service getService();
   

    public static class ServiceBinder<T extends Service> extends Binder {
        private ServiceCreator mServiceCreator;

        public ServiceBinder(ServiceCreator serviceFactory) {
            mServiceCreator = serviceFactory;
        }

        @SuppressWarnings("unchecked")
        public T getService() {
            return (T) mServiceCreator.getService();
        }

        public void setCallBack(ServiceCreator cb) {
            mServiceCreator = cb;

        }

    }

}

//实现接口

public class ServiceServer extends Service implements ServiceCreator {
    private ServiceBinder<ServiceServer> mBinder;
    public int test;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        mBinder = new ServiceBinder<ServiceServer>(this);
        test = 10;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        test=50;

        //返回binder传给ServiceConnection
        return mBinder;
    }

    @Override
    public boolean onUnbind(Intent intent) {
        // TODO Auto-generated method stub
        return super.onUnbind(intent);
    }

    @Override
    public ServiceServer getService() {
        // TODO Auto-generated method stub
        return ServiceServer.this;
    }

}

    //绑定Service

       Intent intent = new Intent();
        intent.setClass(this, ServiceServer.class);
        bindService(intent, conn, Context.BIND_AUTO_CREATE);
 

        //ServiceConnection

        ServiceConnection conn = new ServiceConnection() {

        @Override
        public void onServiceDisconnected(ComponentName name) {
            // TODO Auto-generated method stub

        }

        @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
            // TODO Auto-generated method stub

            //从service里的onBinder得到ServiceBinder
            server = ((ServiceCreator.ServiceBinder<ServiceServer>) service)
                    .getService();
            System.out.println("server:"+server.test);

        }
    };

 

核心思想为:

private Binder myBinder  = new Binder (){
   
    public getService(){
       return MyService.this ;
    }
  }
  public onBind(){
     return myBinder ;
  }

0
0
分享到:
评论

相关推荐

    android service实例

    本篇文章将深入探讨`Android Service`的实例,帮助开发者更好地理解和运用这一核心功能。 首先,Service的基本概念是:它是一个没有用户界面的后台组件,可以执行长时间的操作,比如播放音乐、处理网络请求或同步...

    Activity和Service生命周期及使用AIDL通信实例备份

    在Android应用开发中,Activity和Service是两个至关重要的组件,它们各自承载着不同的功能和应用场景。本篇将深入探讨Activity和Service的生命周期以及如何利用Android Interface Definition Language (AIDL)进行...

    在Android中 获取正在运行的Service 实例

    public class ServiceList extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);...// 获取Activity管理器 List&lt;Activ

    android service 简单实例源代码

    本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android应用中创建和使用Service。 首先,我们来了解一下Service的基本概念。Service主要分为两种类型:标准Service和IntentService。标准...

    android intent service 实例

    在这个"android intent service实例"中,我们将深入探讨Intent Service的工作原理、创建过程以及如何在实际应用中使用。 Intent Service的基本概念: 1. 工作队列:Intent Service使用一个工作队列来顺序处理Intent...

    web Service 实例教程

    服务端开发的主要目的是通过WebService技术提供服务接口,以便客户端可以获取服务端的信息。以下是创建服务端的步骤: 1. 创建WebService项目,选择默认的JAX-WS框架。 2. 导入必要的支持包。 3. 手动创建要发布...

    Android Service实例

    Android Service实例的使用是开发者必备的技能,尤其对于那些需要在后台持续运行的任务,如音乐播放、定时任务或者网络通信等场景。 **服务的生命周期** Service的生命周期由系统控制,主要涉及以下方法: 1. `...

    SSH2集成做的一个小实例

    Action类可以通过Spring的注解进行依赖注入,获取Service实例。 最后,创建JSP页面作为视图,展示数据和提供用户交互界面。Struts2通过Struts Tags或者OGNL表达式与后台数据进行交互。 在实际运行时,用户通过...

    Java Web Service的客户端实现

    Service接口继承自`javax.xml.rpc.Service`,在J2EE环境中,通常通过JNDI(Java Naming and Directory Interface)查找来获取Service实例。以下是一个在J2EE环境中使用生成的Stub的示例代码: ```java package ...

    反射获取Context的实例

    通常,我们可以在Activity、Service或Application中直接获取`Context`实例。然而,在非UI线程或自定义类中,可能无法直接获得`Context`,这时候反射就派上用场了。 要通过反射获取`Context`实例,首先我们需要一个...

    Mybatis-Spring整合实例

    6. **测试与运行**:利用Spring的`ApplicationContext`加载配置,获取Service实例进行测试。在实际项目中,通常会配合Spring Boot或Maven插件进行自动化构建和测试。 以上就是Mybatis-Spring整合的基础知识,这个...

    通过反射获取Context实例的Demo

    当我们需要在非Activity或非Service类中使用Context时,可以通过各种方式获取,其中之一就是利用Java的反射机制。本示例"通过反射获取Context实例的Demo"将展示如何在没有直接Context引用的情况下,通过反射来获取...

    web service 实例

    首先,你需要获取Web服务的WSDL文档,这是描述服务接口、操作和绑定的关键文件。你可以将这个文档导入到Delphi项目中,Delphi会自动生成对应的客户端代理类。 导入WSDL后,Delphi会创建一个或多个接口类,这些接口...

    Android Service控件用法实例分析

    - 示例代码中的MyService创建了一个内部类MyBinder,实现了Binder接口,使得Activity可以通过getMyService()方法获取Service实例并调用其方法。 6. **ServiceConnection的使用** - ServiceConnection用于管理...

    Android Service简单实例

    `Start Service`主要用于执行非交互式的任务,例如后台音乐播放或数据同步,而`Bound Service`则提供客户端-服务端接口,允许其他组件与之交互并获取结果。 在`Start Service`中,服务一旦启动就会持续运行,直到...

    Oracle Service Bus实例开发详解

    ### Oracle Service Bus 实例开发详解 #### 概述 Oracle Service Bus (OSB) 是一款高性能、可扩展的企业级服务总线产品,旨在提供企业应用集成和服务导向架构(SOA)的支持。它允许开发者和系统架构师利用消息传递...

    Web Service实例代码

    总的来说,Web Service实例代码演示了如何使用VS2008和SQL Server 2008构建一个简单的数据查询服务。这涉及到了Web服务的生命周期、数据访问、XML序列化和反序列化,以及客户端与服务端的交互过程。通过学习和实践这...

    native server调用javaserver

    假设我们的Service名称为`IKuiService`,则可以通过以下步骤获取Service实例: ```cpp sp&lt;IServiceManager&gt; sm = defaultServiceManager(); sp&lt;IBinder&gt; binder = sm-&gt;getService(String16("kuiService")); sp...

Global site tag (gtag.js) - Google Analytics