进程内服务Service(SimpleRandomServiceDemo)

     

    Inter Process Communication,IPC(进程间通信,吼吼。),它可以用于解决两个不同Android应用程序进程之间的调用和通信问题。

    Service生命周期

     

    调用startService()启动Service --> onCreate() --> onStart() --> Service正在运行-->Sercice被停止-->onDestroy()--> 关闭Service

     

     

     

     

    使用方式有两种

    1.启动方式(不能获取Service对象,无法调用Service中的方法)

    1.1Context.startService()启动Servide

    1.2Context.stopService()终止ServiceService.stopSefl()停止Service

    1.31.2中的终止并未真正终止,除非它所在的Activity调用onDestroy()才算真正终止

    2.绑定方式(能获取Service对象,可以调用Service中的方法,通过Connection实现)

              2.1Context.bindService()建立服务链接

    2.2Context.unbindService()终止链接

    最主要的是:同一个Service可以绑定多个服务链接,这样可以同时为多个不同的组件提供服务

     

    例:播放MP3暂停

    Context.startService();启动服务

    Context.bindService();获取Service对象保存播放信息,再用:暂停函数暂停播放

    需要注意的是:在此情况下如何调用Context.stopService()终止播放的话并不能停止Service,需要在所有的服务链接关闭后,Service才能真正停止

 

    Intent广播消息时候要有一个唯一标识,此处,Service在全局文件中注册时也要一个唯一标识

    <service android:name=".继承Service的类名">

    代码实现Service后有两种方式启动服务:显式启动和隐式启动

    1.显式启动:

    final Intent serviceIntent = new Intent(this,继承Service的类名.class);

    startService(serviceIntent);

     

    2.隐式启动:

    final Intent serviceIntent = new Intent();

    serviceIntent.setAction("继承Service的类_完整路径");

     

    <service android:name=".继承Service的类名">

    <intent-filter>

    <action android:name="继承Service的类_完整路径"/>

    </intent-filter>

    </service>

    无论何种方式 :关闭方式都一样的:stopService(serviceIntent);……………….吼吼

     

     

     

     

     

      bindService:

      创建一个能提供绑定服务的功能时,必须提供一个IBinder对象,吼吼,客户端能用这个对象与服务交互,定义方式有三种:

      1.扩展Binder

      1.1:Service类中,创建一个Binder实例,包含客户端使用的公共方法,返回当前服务对象

      1.2:onBinder()方法中返回Binder实例

      1.3:在客户端,从onServiceConnected()方法中取得Binder实例

       

      2.使用Message

      3.使用AIDLAndroid Interface Definitation Language

       

       

      服务启动之后是运行在主线程之中的,输入日志中可以直接取线程信息:(Log.i(TAG”,Thread.getCurrentThread.getId());

       

       

      Service里面处理比较耗时的事件用多线程即可解决的,但在Android中系统提供了一个IntentService来专门处理异步请求,客户通过调用startService(Intent )方法传递请求给IntentService,IntentService再通过 worker Thread来处理每个Intent对象,执行完以后会自动停止此Service…..吼吼。。有队列使用哦

      步骤如下:

      1.写构造方法

      2.复写onHandleIntent()方法。

你可能感兴趣的:(android,通信,职场,应用程序,休闲)