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
- package com.example;
- import android.app.Service;
- import android.content.Intent;
- import android.media.MediaPlayer;
- import android.os.IBinder;
- import android.util.Log;
- import android.widget.Toast;
- public class MyService extends Service {
- private static final String TAG = "MyService";
- MediaPlayer player;
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
- Log.d(TAG, "onCreate");
- player = MediaPlayer.create(this, R.raw.braincandy);//运行例子是,需要替换音乐的名称
- player.setLooping(false); // Set looping
- }
- @Override
- public void onDestroy() {
- Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
- Log.d(TAG, "onDestroy");
- player.stop();
- }
- @Override
- public void onStart(Intent intent, int startid) {
- Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
- Log.d(TAG, "onStart");
- player.start();
- }
- }
除此之外还要在Manifest里面声明服务:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example" android:versionCode="1" android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".ServicesDemo" android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <service android:enabled="true" android:name=".MyService" />
- </application>
- <uses-sdk android:minSdkVersion="3" />
- </manifest>
定义Activity,ServicesDemo.java
- package com.example;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class ServicesDemo extends Activity implements OnClickListener {
- private static final String TAG = "ServicesDemo";
- Button buttonStart, buttonStop;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- buttonStart = (Button) findViewById(R.id.buttonStart);
- buttonStop = (Button) findViewById(R.id.buttonStop);
- buttonStart.setOnClickListener(this);
- buttonStop.setOnClickListener(this);
- }
- public void onClick(View src) {
- switch (src.getId()) {
- case R.id.buttonStart:
- Log.d(TAG, "onClick: starting srvice");
- startService(new Intent(this, MyService.class));
- break;
- case R.id.buttonStop:
- Log.d(TAG, "onClick: stopping srvice");
- stopService(new Intent(this, MyService.class));
- break;
- }
- }
- }
相关推荐
解决: Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1). Searched in the following locations: ...
5. **异步操作(AsyncTask和Handler)**:Android主线程不适宜执行耗时操作,因此需要使用AsyncTask或Handler进行异步处理。理解这两种方法的优缺点,以及如何避免内存泄漏和线程安全问题,是提升应用性能的关键。 ...
根据提供的文件信息,本文将详细解释 Android 中 Services 的使用,特别是如何通过 AlarmManager 来调度服务,实现定时任务。文章将分为几个部分:基础知识、AlarmManager 的使用方式、示例代码解析以及注意事项。 ...
Web服务(Web Services)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件,它允许不同系统间的应用程序进行交互。本示例代码是关于如何创建和使用Web服务的一个简明教程,旨在帮助...
这个"android:Android平台示例代码"的项目,可能是一个包含多种Android应用开发示例的资源库,帮助开发者理解和学习如何在Android环境中集成和使用谷歌分析服务。谷歌分析是Google提供的一款强大的数据统计和分析...
OpenGL ES是Android平台上的2D和3D图形库,对于高级游戏,开发者可能需要使用它来实现复杂的视觉效果。同时,Android还提供了SurfaceView和TextureView等组件来帮助处理游戏画面的更新。 音效和音乐的集成也是游戏...
【标题】"Sample : Ria Services + MVVM + MEF" 涉及的是一个使用Silverlight 4.0、WCF RIA Services 4.0、MVVM(Model-View-ViewModel)模式以及MEF(Managed Extensibility Framework)构建的示例项目。...
AWS Android Sample是一个专门为Android开发者设计的项目,展示了如何在Android应用程序中集成Amazon Web Services(AWS)。这个项目提供了详细的示例代码,帮助开发者了解如何利用AWS的各种服务,如S3(Simple ...
4. **使用示例**: "google-services-master"中的Android子项目提供了各个服务的示例代码,如Google Sign-In、Firebase Authentication等,开发者可以参考这些代码实现具体功能。 三、iOS平台的集成 1. **配置...
以上代码示例展示了Android客户端如何调用Web Service的基本流程。在实际项目中,可能还需要处理网络错误、线程同步等问题,确保应用的健壮性。 在毕业设计中,通过这样的实践,可以提升对Android客户端与服务器...
本示例项目"BannerExample"是专为Android Studio设计的,旨在向开发者展示如何集成并有效地使用AdMob服务来显示横幅广告。 首先,我们需要了解AdMob的基本概念。AdMob是通过Google Play Services提供的,它提供了一...
在这些示例中,你可能会看到如何创建和管理活动(Activities)、服务(Services)、广播接收器(Broadcast Receivers)以及内容提供者(Content Providers)——这四大Android应用组件。 其次,Java编程语言是...
在`Demo3_webServices`示例项目中,我们可以预期看到一个简单的Android应用,该应用展示了如何调用一个Web服务并处理返回的数据。项目可能包含以下几个关键部分: - 主Activity:负责触发Web服务请求,展示请求结果...
这个“SQL2008.Reporting_Services.Samples”压缩包包含了一系列的示例,旨在帮助用户更好地理解和掌握 Reporting Services 的功能和用法。 报表服务的核心功能包括: 1. **数据报表设计**:用户可以使用 Report ...
本示例将探讨如何通过Spring集成Cxf来暴露Web服务,帮助开发者更好地理解和实现这一功能。 首先,我们需要了解Spring与Cxf的基本概念。Spring框架提供了一个全面的编程和配置模型,用于简化企业级Java应用程序的...
iOS的 Audio Queue Services 参考示例。 官方文档参考 ...
描述中提到的"webservices接口示例"可能是指展示如何创建、发布和使用一个简单的Web服务。在Java世界里,XFire是一个流行的开源框架,用于构建和实现Web服务。XFire提供了一种简单的方式来创建服务端点(SEI, ...
- **Services**:包含了使用 RxJava 3 进行网络请求或其他后台操作的服务类。 - **Utils**:可能包含一些 RxJava 3 相关的工具函数,如转换、过滤等操作符的封装。 - **Observables**:定义了特定的数据流,可以是...
本示例将重点讲解如何利用Web Services技术实现这一功能。Web Services是一种通过网络提供和消费服务的方式,它使得不同系统之间可以进行数据交换,实现了跨平台的通信。 首先,我们需要理解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...