android service 和其他服务一样,并没有实际运行的界面,它运行在android 后台。一般通过service为应用程序提供服务(比如,从Internet下载文件,控制音乐播放器等)。Service的生命周期要比activity简单的多,它只有三个阶段(创建服务、开始服务、销毁服务)。下面通过具体事例讲解android的service组件。

1.创建android工程

在Eclipse中创建android工程 android_service_one

2.创建Service

在android工程中,创建包com.example.service,并添加方法MyService。该方法继承与Service。该类用来展示服务的三个生命周期。

package com.example.service;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.util.Log;/* *  */public class MyService extends Service {    @Override    public IBinder onBind(Intent intent) {        // TODO Auto-generated method stub        return null;    }    //第一次打开时调用    public void onCreate()    {        Log.d("MyService", "onCreate");        super.onCreate();    }    //停止时调用    public void onDestory()    {        Log.d("MySerVice", "onDestory");        super.onDestroy();    }    //开始时调用    public void onStart(Intent intent,int startId)    {        Log.d("MyService", "onStart");        super.onStart(intent, startId);    }}
MyService

3.调用服务

在android 活动组件中调用刚刚建立的服务,调用之前需要在AndroidManifest.xml中对该服务进行配置。通过<service></service>来配置服务组件。

1   <service android:enabled="true" android:name="com.example.service.MyService"></service>

服务配置完成以后,可以调用该服务。服务与activity之间的交互依然通过Intent来进行通信。启动服务通过startservice(intent),停止服务通过stopservice(Intent intent)来完成。

Intent的声明:Intent Intent=new Intent(this,MyService.class);

 1     public void onClick(View v) { 2         // TODO Auto-generated method stub 3         switch(v.getId()) 4         { 5         case R.id.button1: 6             startService(serviceintent); 7             break; 8         case R.id.button2: 9             stopService(serviceintent);10             break;11         }12     }
服务的停止与启动

4.Service与Activity绑定

Service与Activity绑定,当Activity启动时,服务自动启动。当Activity被销毁时,服务也被销毁。这里需要在MyService中重写 onBind、onRebind和onUnbind等几个方法。

 1 package com.example.service; 2  3 import android.app.Service; 4 import android.content.Intent; 5 import android.os.Binder; 6 import android.os.IBinder; 7 import android.util.Log; 8  9 /*10  * 11  */12 public class MyService extends Service {13 14     private MyBinder myBinder= new MyBinder();15     16     @Override17     //成功绑定时调用该方法18     public IBinder onBind(Intent intent) {19         // TODO Auto-generated method stub20         Log.d("MyService", "onBind");21         return myBinder;22     }23     24     //重新绑定时调用该方法25     public void onRebind(Intent intent)26     {27         Log.d("MyService", "onRebind");28         super.onRebind(intent);29     }30     31     //解除绑定时调用该方法32     public void onUnBind(Intent intent)33     {34         Log.d("MyService", "onUnbind");35         super.onUnbind(intent);36     }37     //第一次打开时调用38     public void onCreate()39     {40         Log.d("MyService", "onCreate");41         super.onCreate();42     }43     //停止时调用44     public void onDestory()45     {46         Log.d("MySerVice", "onDestory");47         super.onDestroy();48     }49     //开始时调用50     public void onStart(Intent intent,int startId)51     {52         Log.d("MyService", "onStart");53         super.onStart(intent, startId);54     }55     56     //绑定类57     public class MyBinder extends Binder58     {59         //返回服务实例60         public MyService getService()61         {62             return MyService.this;63         }64     }65 }
MyService

5.调用服务

在Activity中声明服务变量 Myservice myService,和声明ServiceConnection连接变量。绑定变量调用bindService(serviceintent, conn, Context.BIND_AUTO_CREATE);

解除绑定调用,unbindService(ServiceConnection).

 1     Intent serviceintent; 2     private MyService myService; 3     private ServiceConnection conn=new ServiceConnection() { 4          5         @Override 6         public void onServiceDisconnected(ComponentName name) { 7             // TODO Auto-generated method stub 8             myService=null; 9             Toast.makeText(MainActivity.this, "服务连接失败", Toast.LENGTH_LONG).show();10         }11         12         @Override13         public void onServiceConnected(ComponentName name, IBinder service) {14             // TODO Auto-generated method stub15             myService=((MyService.MyBinder)service).getService();16             Toast.makeText(MainActivity.this, "服务连接成功", Toast.LENGTH_LONG).show();17         }18     };
ServiceConnection

更多相关文章

  1. Android四大组件——Activity生命周期详解
  2. Android(安卓)NDK 使用第一步,编译c文件,声明jni并调用。
  3. android与Unity3d交互
  4. H5调用Android原生Api
  5. Android(安卓)IPC机制(五)用Socket实现跨进程聊天程序
  6. android 条形码的应用
  7. Android(安卓)核心分析 之八Android(安卓)启动过程详解
  8. 详解 Android(安卓)的 Activity 组件【Z】
  9. Android应用程序请求SurfaceFlinger服务创建Surface的过程分析

随机推荐

  1. 深度社区新版论坛正式上线!
  2. 深度系统更新(2020.11.11)
  3. 深度系统更新(2020.11.13)
  4. deepin20.1发布—细微之处 体验不凡
  5. 深度学习高能干货:手把手教你搭建MXNet框
  6. 想用Python爬小姐姐图片?那你得先搞定分布
  7. 一文看懂数据清洗:缺失值、异常值和重复值
  8. 作品拍卖价碾压毕加索,没有灵魂的AI灵魂画
  9. 「最有用」的特殊大数据:一文看懂文本信息
  10. 一文读懂「中台」的前世今生