`
flycomos.lee
  • 浏览: 281950 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Service使用总结

阅读更多

Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。Service 可以分为有无限生命和有限生命两种。

特别需要注意的是Service跟Activities是不同 的(简单来说可以理解为后台与前台的区别),例如,如果需要使用Service的话,需要调用startService(),从而利用 startService()去调用Service中的OnCreate()和onStart()方法来启动一个后台的Service。

 

启动一个Service的过程如下:

context.startService()  ->onCreate()- >onStart()->Service running

其中onCreate()可以进行一些服务的初始化工作,onStart()则启动服务。

 

停止一个Service的过程如下:

context.stopService() | ->onDestroy() ->Service stop

 

 

接下来的实例是一个利用后台服务播放音乐的小例子,点击start运行服务,点击stop停止服务。

 

程序运行界面:

 

代码:

定义服务,MyService.java

 

Java代码  收藏代码
  1. package  com.example;  
  2.   
  3. import  android.app.Service;  
  4. import  android.content.Intent;  
  5. import  android.media.MediaPlayer;  
  6. import  android.os.IBinder;  
  7. import  android.util.Log;  
  8. import  android.widget.Toast;  
  9.   
  10. public   class  MyService  extends  Service {  
  11.     private   static   final  String TAG =  "MyService" ;  
  12.     MediaPlayer player;  
  13.       
  14.     @Override   
  15.     public  IBinder onBind(Intent intent) {  
  16.         return   null ;  
  17.     }  
  18.       
  19.     @Override   
  20.     public   void  onCreate() {  
  21.         Toast.makeText(this "My Service Created" , Toast.LENGTH_LONG).show();  
  22.         Log.d(TAG, "onCreate" );  
  23.           
  24.         player = MediaPlayer.create(this , R.raw.braincandy); //运行例子是,需要替换音乐的名称   
  25.         player.setLooping(false );  // Set looping   
  26.     }  
  27.   
  28.     @Override   
  29.     public   void  onDestroy() {  
  30.         Toast.makeText(this "My Service Stopped" , Toast.LENGTH_LONG).show();  
  31.         Log.d(TAG, "onDestroy" );  
  32.         player.stop();  
  33.     }  
  34.       
  35.     @Override   
  36.     public   void  onStart(Intent intent,  int  startid) {  
  37.         Toast.makeText(this "My Service Started" , Toast.LENGTH_LONG).show();  
  38.         Log.d(TAG, "onStart" );  
  39.         player.start();  
  40.     }  
  41. }  

 

除此之外还要在Manifest里面声明服务:

 

Xml代码  收藏代码
  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2. < manifest   xmlns:android = "http://schemas.android.com/apk/res/android"   
  3.   package = "com.example"   android:versionCode = "1"   android:versionName = "1.0" >   
  4.   < application   android:icon = "@drawable/icon"   android:label = "@string/app_name" >   
  5.     < activity   android:name = ".ServicesDemo"   android:label = "@string/app_name" >   
  6.       < intent-filter >   
  7.         < action   android:name = "android.intent.action.MAIN"   />   
  8.         < category   android:name = "android.intent.category.LAUNCHER"   />   
  9.       </ intent-filter >   
  10.     </ activity >   
  11.     < service   android:enabled = "true"   android:name = ".MyService"   />   
  12.   </ application >   
  13.   < uses-sdk   android:minSdkVersion = "3"   />   
  14. </ manifest >    
 

 定义Activity,ServicesDemo.java

 

Java代码  收藏代码
  1. package  com.example;  
  2.   
  3. import  android.app.Activity;  
  4. import  android.content.Intent;  
  5. import  android.os.Bundle;  
  6. import  android.util.Log;  
  7. import  android.view.View;  
  8. import  android.view.View.OnClickListener;  
  9. import  android.widget.Button;  
  10.   
  11. public   class  ServicesDemo  extends  Activity  implements  OnClickListener {  
  12.   private   static   final  String TAG =  "ServicesDemo" ;  
  13.   Button buttonStart, buttonStop;  
  14.   
  15.   @Override   
  16.   public   void  onCreate(Bundle savedInstanceState) {  
  17.     super .onCreate(savedInstanceState);  
  18.     setContentView(R.layout.main);  
  19.   
  20.     buttonStart = (Button) findViewById(R.id.buttonStart);  
  21.     buttonStop = (Button) findViewById(R.id.buttonStop);  
  22.   
  23.     buttonStart.setOnClickListener(this );  
  24.     buttonStop.setOnClickListener(this );  
  25.   }  
  26.   
  27.   public   void  onClick(View src) {  
  28.     switch  (src.getId()) {  
  29.     case  R.id.buttonStart:  
  30.       Log.d(TAG, "onClick: starting srvice" );  
  31.       startService(new  Intent( this , MyService. class ));  
  32.       break ;  
  33.     case  R.id.buttonStop:  
  34.       Log.d(TAG, "onClick: stopping srvice" );  
  35.       stopService(new  Intent( this , MyService. class ));  
  36.       break ;  
  37.     }  
  38.   }  

分享到:
评论

相关推荐

    android service总结文档

    一篇对于android service的详细总结

    Android Service大总结Demo

    本示例"Android Service大总结Demo"将深入探讨Service的使用,包括如何启动、绑定服务,以及实现跨进程间的通信。我们将详细讲解以下几个关键知识点: 1. **Service的基本概念**: - Service是一种没有用户界面的...

    android service使用详解

    本篇文章将深入探讨如何在Android中使用Service。 一、Service的基本概念 Service是Android系统中的一个特殊组件,它可以在后台运行,不与用户界面直接交互。Service可以启动(Start)或绑定(Bind),两种方式各有...

    Android-Service与Activity传值

    总结来说,`Service`和`Activity`之间的数据传递可以通过Intent参数、BroadcastReceiver或Binder实现。BroadcastReceiver适用于不频繁的数据交换,而Binder适合需要频繁交互且在同一个进程的情况。开发者应根据具体...

    Android Service简单实例

    总结起来,`Start Service`在Android中主要用于执行后台任务,它不会直接与启动它的组件进行交互,而是独立运行。理解并正确使用`Start Service`对于开发能够后台运行的应用至关重要。在实际项目中,根据需求选择...

    android service的小实例

    总结起来,Android Service提供了多种启动方式,根据应用场景选择合适的方式可以优化性能和用户体验。启动方式适用于无需频繁交互的后台任务,绑定方式适用于需要与Service紧密交互的情况,线程方式确保Service不会...

    Android中Service组件的使用

    总结一下,Android的Service组件用于执行后台任务,可以通过startService()和stopService()控制其生命周期。Service与外部通信依赖于Binder和IBinder,通过实现IBinder接口,Service可以暴露自己的方法供其他组件...

    Android之Service实现比较大小

    总结来说,Android Service根据其启动模式和使用场景有不同的行为和生命周期管理。开发者需要根据实际需求选择合适的启动模式,并注意系统对后台服务的限制。在设计Service时,应尽量减少对CPU和内存的占用,避免...

    android service

    总结来说,“android service”是Android开发中的核心概念,它支持后台运行,是实现持久化操作的关键。通过深入学习Service的源码,结合各种工具进行调试和分析,开发者可以更高效地利用Service实现复杂的功能,同时...

    Android Service Demo

    总结来说,"Android Service Demo"是一个学习如何在Android应用中实现后台服务的实例。它涵盖了Service的创建、启动、绑定和生命周期管理,对于理解Android服务的工作原理及其在实际应用中的使用非常有帮助。通过...

    Android Service与Activity交互

    在Android应用开发中,Service和Activity是两个非常重要的组件,它们各自扮演着不同的角色。Service主要负责在后台执行长时间运行的任务,而Activity则用于与用户交互。本示例"Android Service与Activity交互"旨在...

    Android Service之start实现

    总结来说,`startService()`是Android中启动服务的一种方式,适用于执行非交互的后台任务。在使用时,需要正确处理Service的生命周期方法,确保服务在必要时启动和停止,并遵循Android的后台服务最佳实践,以提供...

    Android---Service Timer之执行周期任务

    总结起来,Android的Service和Timer是强大的工具,它们可以帮助开发者实现在后台的定时任务。正确地使用它们,可以提高应用的功能性和用户体验。然而,需要注意的是,频繁的后台操作可能会消耗较多的系统资源,因此...

    android学习之Service启动1

    总结起来,理解并掌握Service的启动方式和生命周期管理是Android开发中的重要环节。在实际应用中,根据需求选择合适的启动模式,并确保服务的运行效率和用户体验。通过`com.njupt.zhb.MusicPlay`这样的练习,可以...

    android service弹出对话框

    总结来说,要在Android Service中弹出对话框,需要创建一个兼容Service的Context,使用新线程或Handler来显示Dialog,并根据Service的生命周期进行适当的管理。对于复杂的需求,可以考虑使用DialogFragment。同时,...

    Android service start方式启动

    总结一下,`startService()`是Android中启动服务的关键方法,适用于需要后台长期运行的任务。理解并正确使用服务可以极大地增强你的应用功能,但也要注意资源管理,避免过度消耗设备资源。通过学习和实践`Android_...

    Android notification+Service实时更新

    总结来说,这个项目通过`Notification`、`Service`和`BroadcastReceiver`实现了后台文件下载并实时通知用户的功能。`Notification`提供用户界面反馈,`Service`负责文件下载,`BroadcastReceiver`监听并处理下载状态...

    android service 之一 (start service)

    总结起来,Start Service是Android中用于启动后台任务的重要工具,正确理解和使用它可以提升应用的用户体验,但同时也需要注意资源管理和生命周期管理,以保证应用的稳定性和效率。在`ServiceDemo`项目中,我们可以...

    Android Service之bound实现

    总结起来,Android中的Bound Service是一种允许应用程序组件与服务进行交互的服务类型,通过`IBinder`接口进行通信,提供了一种更加灵活且高效的服务使用方式。理解并熟练掌握Bound Service的实现和使用,对于开发...

    Android 远程服务(remote service)

    总结来说,Android远程服务是实现跨进程通信的重要手段,通过AIDL和Binder机制,我们可以构建出高效、稳定的服务架构。正确理解和运用远程服务,可以为Android应用开发带来更大的灵活性和扩展性。在实际开发中,根据...

Global site tag (gtag.js) - Google Analytics