`

【Android】四大组件之Service(服务)

阅读更多

 

ServiceAndorid系统提供的四大组件之一,它的地位和Activity是并列的,只是使用的频率没有Activity高。Service就是运行于后台的一种服务程序,一般很少和用户交互,因此没有可视化界面。

         定义一个Service类只要继承Service类即可,实现其生命周期中的方法就可以了,另外,一个定义好的Service组件必须要在AndoridManifest.xml文件中注册才能够使用。

         Service有自己的生命周期,可以调用startService()启动一个Service或者使用bindService()来绑定一个service,还可以通过RPC(远程进程调用)机制来实现不同进程间Service的调用。

 

Service中定义了一系列和自身生命周期相关的方法:

onBind(Intent intent):是必须实现的一个方法,返回一个绑定的接口给Service

onCreate():当Service第一次被创建时,由系统调用。

onStart(Intent intent,int startId):当通过startService()方法启动Service时,该方法被调用。

onDestroy():当Service不再使用,系统调用该方法。

 

实例如下:

MyService.java

 

Java代码 
  1. /* 
  2.  * @author hualang 
  3.  */  
  4. package org.hualang.service;  
  5.   
  6. import android.app.Service;  
  7. import android.content.Intent;  
  8. import android.os.IBinder;  
  9. import android.util.Log;  
  10. import android.widget.Toast;  
  11.   
  12. public class MyService extends Service {  
  13.   
  14.     @Override  
  15.     public IBinder onBind(Intent intent) {  
  16.         // TODO Auto-generated method stub  
  17.         Log.i("SERVICE""onBind.................");  
  18.         Toast.makeText(MyService.this"onBind.................", Toast.LENGTH_LONG).show();  
  19.         return null;  
  20.     }  
  21.       
  22.     public void onCreate()  
  23.     {  
  24.         Log.i("SERVICE""onCreate................");  
  25.         Toast.makeText(MyService.this"onCreate................", Toast.LENGTH_LONG).show();  
  26.     }  
  27.     public void onStart(Intent intent,int startId)  
  28.     {  
  29.         Log.i("SERVICE""onStart.................");  
  30.         Toast.makeText(MyService.this"onStart.................", Toast.LENGTH_LONG).show();  
  31.     }  
  32.     public void onDestroy()  
  33.     {  
  34.         Log.i("SERVICE""onDestroy.................");  
  35.         Toast.makeText(MyService.this"onDestroy.................", Toast.LENGTH_LONG).show();  
  36.     }  
  37. }  

 ServiceTest.java

 

Java代码 
  1. /* 
  2.  * @author hualang 
  3.  */  
  4. package org.hualang.service;  
  5.   
  6. import android.app.Activity;  
  7. import android.app.Service;  
  8. import android.content.ComponentName;  
  9. import android.content.Intent;  
  10. import android.content.ServiceConnection;  
  11. import android.os.Bundle;  
  12. import android.os.IBinder;  
  13. import android.util.Log;  
  14. import android.view.View;  
  15. import android.view.View.OnClickListener;  
  16. import android.widget.Button;  
  17. import android.widget.Toast;  
  18.   
  19. public class ServiceTest extends Activity {  
  20.     /** Called when the activity is first created. */  
  21.     private Button startService,stopService,bindService,unbindService;  
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.         startService=(Button)findViewById(R.id.startButton);  
  27.         stopService=(Button)findViewById(R.id.stopButton);  
  28.         bindService=(Button)findViewById(R.id.bindButton);  
  29.         unbindService=(Button)findViewById(R.id.unbindButton);  
  30.         startService.setOnClickListener(startListener);  
  31.         stopService.setOnClickListener(stopListener);  
  32.         bindService.setOnClickListener(bindListener);  
  33.         unbindService.setOnClickListener(unbindListener);  
  34.           
  35.     }  
  36.     private OnClickListener startListener=new OnClickListener()  
  37.     {  
  38.   
  39.         @Override  
  40.         public void onClick(View v) {  
  41.             // TODO Auto-generated method stub  
  42.             Intent intent=new Intent();  
  43.             intent.setAction("org.hualang.service.action.MYSERVICE");  
  44.             startService(intent);  
  45.         }  
  46.           
  47.     };  
  48.     private OnClickListener stopListener=new OnClickListener()  
  49.     {  
  50.   
  51.         @Override  
  52.         public void onClick(View v) {  
  53.             // TODO Auto-generated method stub  
  54.             Intent intent=new Intent();  
  55.             intent.setAction("org.hualang.service.action.MYSERVICE");  
  56.             stopService(intent);  
  57.         }  
  58.           
  59.     };  
  60.     private ServiceConnection conn=new ServiceConnection()  
  61.     {  
  62.   
  63.         @Override  
  64.         public void onServiceConnected(ComponentName name, IBinder service) {  
  65.             // TODO Auto-generated method stub  
  66.             Log.i("SERVICE""connection success");  
  67.             Toast.makeText(ServiceTest.this"connection success", Toast.LENGTH_LONG).show();  
  68.         }  
  69.   
  70.         @Override  
  71.         public void onServiceDisconnected(ComponentName name) {  
  72.             // TODO Auto-generated method stub  
  73.             Log.i("SERVICE""connection success");  
  74.             Toast.makeText(ServiceTest.this"connection failure", Toast.LENGTH_LONG).show();  
  75.         }  
  76.           
  77.     };  
  78.     private OnClickListener bindListener=new OnClickListener()  
  79.     {  
  80.   
  81.         @Override  
  82.         public void onClick(View v) {  
  83.             // TODO Auto-generated method stub  
  84.             Intent intent=new Intent();  
  85.             intent.setAction("org.hualang.service.action.MYSERVICE");  
  86.             bindService(intent,conn,Service.BIND_AUTO_CREATE);  
  87.         }  
  88.           
  89.     };  
  90.     private OnClickListener unbindListener=new OnClickListener()  
  91.     {  
  92.   
  93.         @Override  
  94.         public void onClick(View v) {  
  95.             // TODO Auto-generated method stub  
  96.             Intent intent=new Intent();  
  97.             intent.setAction("org.hualang.service.action.MYSERVICE");  
  98.             unbindService(conn);  
  99.         }  
  100.           
  101.     };  
  102. }  

 

在AndroidManifest.xml文件中注册Service如下

 

Java代码 
  1. <service android:name="MyService">  
  2.             <intent-filter>  
  3.                 <action android:name="org.hualang.service.action.MYSERVICE"/>  
  4.             </intent-filter>  
  5.         </service>  

 main.xml布局文件

 

Java代码 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <Button  
  8.         android:text="启动Service"  
  9.         android:id="@+id/startButton"  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.     />  
  13.         <Button  
  14.         android:text="停止Service"  
  15.         android:id="@+id/stopButton"  
  16.         android:layout_width="fill_parent"  
  17.         android:layout_height="wrap_content"  
  18.     />  
  19.         <Button  
  20.         android:text="绑定Service"  
  21.         android:id="@+id/bindButton"  
  22.         android:layout_width="fill_parent"  
  23.         android:layout_height="wrap_content"  
  24.     />  
  25.         <Button  
  26.         android:text="解除绑定unbindService"  
  27.         android:id="@+id/unbindButton"  
  28.         android:layout_width="fill_parent"  
  29.         android:layout_height="wrap_content"  
  30.     />  
  31. </LinearLayout>  

 

不解释,看运行结果就会明白

(1)当点击“启动Servcie”会先弹出"onCreate",然后弹出"onStart"的Toast,在LogCat中会看到先显示

的也是

onCreate

onStart


(2)点击“停止Service”按钮,会弹出onDestroy的Toast

LogCat中也会显示

onDestroy()



 (3)点击"绑定Service"按钮,会弹出onCreate和onBind的Toast

LogCat中显示

onCreate

onBind



 (4)点击“解除绑定Service”按钮,会弹出onDestroy的Toast,LogCat中也如此



 

下面是LogCat中显示的信息

 


 

分享到:
评论

相关推荐

    Android四大组件简述

    在"Android四大组件简述"这个项目中,你可以找到关于这些组件的示例代码和实践应用,通过学习和调试这些示例,可以更深入地理解四大组件的工作原理和使用方式。这将对提升你的Android开发技能大有裨益。

    Android 四大组件之Service的Demo

    本篇文章将深入探讨四大组件之一的Service,并通过一个名为"servicesdemo"的示例项目来阐述其核心概念和使用方法。 Service是Android系统中的一个关键组件,它在后台运行,无需用户界面,可以执行长时间的任务,...

    Android开发四大组件之Service应用总结Demo

    service的启动,停止,绑定,取消绑定,以及IntentService的生命周期走向测试和IntentService与访问者信息通信过程,不清楚之处请参阅我的博客《Android开发四大组件之Service总结》

    android四大组件之Service

    ### Android四大组件之Service #### 一、Service概述与特性 Service是Android系统中的四大核心组件之一,与Activity、BroadcastReceiver以及ContentProvider并列。它主要用于执行长时间运行的任务或者后台操作,...

    android 四大组件详细介绍

    Activity 是 Android四大组件中最复杂的,需要处理界面逻辑、事件响应、生命周期管理等多个方面。一个 Activity 占据当前的窗口,响应所有窗口事件,具备有控件、菜单等界面元素。 Service Service 服务是 Android...

    android四大组件详解

    在Android系统中,四大组件是构建应用程序的核心元素,它们分别是Activity、Service、BroadcastReceiver和Content Provider。这四个组件各自承担着不同的职责,共同构成了Android应用的骨架。 **Activity**是用户与...

    Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务

    在Android应用开发中,"四大组件"是构成应用程序的核心元素,包括Activity(活动)、BroadcastReceiver(广播接收者)、ContentProvider(内容提供者)以及我们关注的Service(服务)。Service是Android系统中的一个...

    android基础知识05:四大组件之service 01实例程序2

    这个实例程序源自博客文章《android基础知识05:四大组件之service 01实例程序2》,它为开发者提供了关于如何在Android应用中实现和使用Service的实践指导。 首先,Service是Android中的后台运行组件,它可以长时间...

    android基础知识05:四大组件之service 01实例程序

    今天我们将聚焦于"四大组件"之一的Service,详细探讨它在Android开发中的作用以及如何创建一个简单的Service实例。 Service组件是Android应用程序中运行在后台的无用户界面组件,用于执行长时间运行的操作或在后台...

    android service 四大组件 完整代码

    在Android开发中,四大组件是应用程序的核心组成部分,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。本篇文章将深入探讨Service组件及其与四大...

    Android开发的四大组件

    在Android应用开发中,四大组件是构建应用程序的基础,它们分别是Activity、Service、BroadcastReceiver和ContentProvider,还有Intent作为组件间通信的重要桥梁。下面我们将逐一详细解释这些组件。 **Activity详解...

    Android四大组件之服务(一),服务的基本用法

    本篇文章将重点探讨四大组件之一的Service,特别是它的基本用法。 Service是Android系统中的一个关键组件,用于在后台执行长时间运行的操作,而不会与用户界面交互。它可以在用户不直接操作应用时持续运行,比如在...

    Android四大组件之服务

    ### Android四大组件之服务 #### 一、服务(Service)概览 在Android开发中,服务是一种后台组件,用于执行长时间运行的操作,例如播放音乐、下载文件等,而无需用户交互。服务可以持续运行,即使触发它的应用已转到...

    四,android四大组件基础介绍及打电话,发短信简单应用 &单元测试

    在Android开发中,四大组件是构建应用程序的核心元素,它们分别是:Activity、Service、BroadcastReceiver以及ContentProvider。这四个组件各自承担着不同的职责,是Android系统交互的基础。 1. **Activity**: ...

    android 四大组件图解 ppt形式展示

    在Android应用开发中,四大组件是其核心构造块,它们分别是Activity、Service、BroadcastReceiver以及ContentProvider。这个名为“Android 四大组件图解”的PPT文档为初学者提供了一个全面且直观的理解这些组件的...

    Android四大组件之Service

    Android四大组件之ServiceService的生命周期被启动(startService)的服务的生命周期:被绑定(bindService)的服务的生命周期:被启动又被绑定的服务的生命周期:实例布局创建Service类启动ServiceDemo下载 android开发...

    安卓四大组件——Service(服务)

    在Android开发中,四大组件是应用程序的核心组成部分,它们分别是Activity(活动)、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者)以及我们今天重点关注的Service(服务)。Service组件在后台...

    android基础知识05:四大组件之service 02:远程调用实例程序

    在"android基础知识05:四大组件之service 02:远程调用实例程序"中,我们探讨的是如何在不同的应用之间通过AIDL(Android Interface Definition Language)进行远程服务调用。AIDL是Android提供的一种机制,用于在...

Global site tag (gtag.js) - Google Analytics