`
jy503160
  • 浏览: 20148 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

转载:Android Services使用示例

 
阅读更多

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.   }  
  39. }  
分享到:
评论

相关推荐

    com.google.android.gms:play-gms:play-services:15.0.1

    解决: Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1). Searched in the following locations: ...

    android代码示例常见

    5. **异步操作(AsyncTask和Handler)**:Android主线程不适宜执行耗时操作,因此需要使用AsyncTask或Handler进行异步处理。理解这两种方法的优缺点,以及如何避免内存泄漏和线程安全问题,是提升应用性能的关键。 ...

    android中Services使用

    根据提供的文件信息,本文将详细解释 Android 中 Services 的使用,特别是如何通过 AlarmManager 来调度服务,实现定时任务。文章将分为几个部分:基础知识、AlarmManager 的使用方式、示例代码解析以及注意事项。 ...

    webservices示例代码

    Web服务(Web Services)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件,它允许不同系统间的应用程序进行交互。本示例代码是关于如何创建和使用Web服务的一个简明教程,旨在帮助...

    android:Android平台示例代码

    这个"android:Android平台示例代码"的项目,可能是一个包含多种Android应用开发示例的资源库,帮助开发者理解和学习如何在Android环境中集成和使用谷歌分析服务。谷歌分析是Google提供的一款强大的数据统计和分析...

    android游戏开发示例

    OpenGL ES是Android平台上的2D和3D图形库,对于高级游戏,开发者可能需要使用它来实现复杂的视觉效果。同时,Android还提供了SurfaceView和TextureView等组件来帮助处理游戏画面的更新。 音效和音乐的集成也是游戏...

    Sample : Ria Services + MVVM + MEF

    【标题】"Sample : Ria Services + MVVM + MEF" 涉及的是一个使用Silverlight 4.0、WCF RIA Services 4.0、MVVM(Model-View-ViewModel)模式以及MEF(Managed Extensibility Framework)构建的示例项目。...

    aws-android-sample:aws android 的示例代码

    AWS Android Sample是一个专门为Android开发者设计的项目,展示了如何在Android应用程序中集成Amazon Web Services(AWS)。这个项目提供了详细的示例代码,帮助开发者了解如何利用AWS的各种服务,如S3(Simple ...

    google-services,一组快速启动示例展示了针对android和ios的googleapi.zip

    4. **使用示例**: "google-services-master"中的Android子项目提供了各个服务的示例代码,如Google Sign-In、Firebase Authentication等,开发者可以参考这些代码实现具体功能。 三、iOS平台的集成 1. **配置...

    [毕设季 android开发] 第五讲:Android客户端调用WebService

    以上代码示例展示了Android客户端如何调用Web Service的基本流程。在实际项目中,可能还需要处理网络错误、线程同步等问题,确保应用的健壮性。 在毕业设计中,通过这样的实践,可以提升对Android客户端与服务器...

    BannerExample:Android Studio 中的示例 Admob 项目

    本示例项目"BannerExample"是专为Android Studio设计的,旨在向开发者展示如何集成并有效地使用AdMob服务来显示横幅广告。 首先,我们需要了解AdMob的基本概念。AdMob是通过Google Play Services提供的,它提供了一...

    Android-Samples:Android 相关项目和示例

    在这些示例中,你可能会看到如何创建和管理活动(Activities)、服务(Services)、广播接收器(Broadcast Receivers)以及内容提供者(Content Providers)——这四大Android应用组件。 其次,Java编程语言是...

    Android中webservices的应用demo

    在`Demo3_webServices`示例项目中,我们可以预期看到一个简单的Android应用,该应用展示了如何调用一个Web服务并处理返回的数据。项目可能包含以下几个关键部分: - 主Activity:负责触发Web服务请求,展示请求结果...

    SQL2008. reporting Services 示例

    这个“SQL2008.Reporting_Services.Samples”压缩包包含了一系列的示例,旨在帮助用户更好地理解和掌握 Reporting Services 的功能和用法。 报表服务的核心功能包括: 1. **数据报表设计**:用户可以使用 Report ...

    Spring集成Cxf暴露WebServices示例

    本示例将探讨如何通过Spring集成Cxf来暴露Web服务,帮助开发者更好地理解和实现这一功能。 首先,我们需要了解Spring与Cxf的基本概念。Spring框架提供了一个全面的编程和配置模型,用于简化企业级Java应用程序的...

    Audio Queue Services 参考示例

    iOS的 Audio Queue Services 参考示例。 官方文档参考 ...

    webservices接口示例

    描述中提到的"webservices接口示例"可能是指展示如何创建、发布和使用一个简单的Web服务。在Java世界里,XFire是一个流行的开源框架,用于构建和实现Web服务。XFire提供了一种简单的方式来创建服务端点(SEI, ...

    RxJava3-Android-示例:RxJava 3 Android示例-从RxJava 2迁移到RxJava 3-如何在Android中使用RxJava 3

    - **Services**:包含了使用 RxJava 3 进行网络请求或其他后台操作的服务类。 - **Utils**:可能包含一些 RxJava 3 相关的工具函数,如转换、过滤等操作符的封装。 - **Observables**:定义了特定的数据流,可以是...

    Android查询来电归属地示例

    本示例将重点讲解如何利用Web Services技术实现这一功能。Web Services是一种通过网络提供和消费服务的方式,它使得不同系统之间可以进行数据交换,实现了跨平台的通信。 首先,我们需要理解Android系统的基本架构...

    Unlocking Android

    Part I: What is Android—The Big Picture Chapter 1: Targeting Android Chapter 2: Development environment Part II: Learning Android’s Key Technologies Chapter 3: User Interfaces Chapter 4: Intents and...

Global site tag (gtag.js) - Google Analytics