`

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

 

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;
    }
  }
}

 翻译整理自:http://www.planetandroid.com/

分享到:
评论
7 楼 z278013421 2014-02-08  
                         
6 楼 飞扬云 2011-09-18  
楼主 列举的例子很好,看起来很顺,很容易懂。

非常感谢了!

向你学习!
5 楼 zhikook 2010-03-02  
很多好的例子,都是SDK ,不过大家很多学习角度的不同
4 楼 wafj1984 2010-02-10  
这个不是apidemo里边有吗?
3 楼 happyljt 2010-01-27  
raymondlueng 写道
wylsx 写道
停止一个Service的过程如下:
应该是 context.stopService() |  ->Service stop ->onDestroy() 吧  呵呵!

不是的,是context.stopService() | ->onDestroy() ->Service stop
你可以在onDestroy()中作一些资源回收的工作!

UP
2 楼 raymondlueng 2010-01-15  
wylsx 写道
停止一个Service的过程如下:
应该是 context.stopService() |  ->Service stop ->onDestroy() 吧  呵呵!

不是的,是context.stopService() | ->onDestroy() ->Service stop
你可以在onDestroy()中作一些资源回收的工作!
1 楼 wylsx 2010-01-15  
停止一个Service的过程如下:
应该是 context.stopService() |  ->Service stop ->onDestroy() 吧  呵呵!

相关推荐

    android中Services使用

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

    android访问webservices详细例子

    在Android开发中,访问Web Services是一项常见的任务,用于与服务器端进行数据交互。Web Services可以是基于SOAP(简单对象访问协议)或者RESTful(表述性状态转移)的API,它们提供了一种跨平台、跨语言的数据交换...

    Android中webservices的应用demo

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

    android ServicesDemo 源码 学习

    ServicesDemo是一个专门用于学习和理解Android Services工作原理的示例项目。通过分析ServicesDemo的源码,我们可以深入理解如何在Android应用中使用Service。 首先,让我们了解什么是Android Service。Service主要...

    android 实例 教程 例子

    在这个项目中,开发者可以找到对各个API函数和控件的使用示例,比如如何在Android应用中添加按钮并响应点击事件,或者如何加载和显示网络图片。这样的实例教程可以帮助开发者快速上手,理解不同控件的工作原理和交互...

    android游戏开发示例

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

    android代码示例常见

    在Android开发领域,掌握一些常见的代码示例是至关重要的,因为它们可以帮助开发者快速理解并解决实际问题。这个压缩包文件提供了多种Android代码示例,涵盖了Android应用开发的基础和进阶内容。下面,我们将深入...

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

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

    JAVA访问WebServices接口的简单实例,android可用

    在Java和Android开发中,访问WebServices接口是常见的需求,用于获取服务器端的数据或者实现远程调用功能。本实例将详细介绍如何在Java(特别是针对Android环境)中实现对WebServices的调用。 首先,我们要理解Web...

    android services

    在本示例代码“android services”中,开发者可能展示了如何创建、启动和绑定到一个Android服务。 1. **服务的创建**: - 创建服务类:继承自`Service`类,并重写其关键方法,如`onStartCommand()`和`onBind()`。 ...

    android 使用GIS加载shp文件例子

    本示例将深入探讨如何使用ArcGIS Runtime SDK for Android来加载和显示SHP文件。 ArcGIS Runtime SDK for Android是Esri公司提供的一个强大的开发工具包,它允许开发者构建功能丰富的地图应用。通过这个SDK,我们...

    android官网,android developer上的15个例子。

    在Android开发领域,官方网站Android Developer提供了丰富的资源和教程,其中包括一系列实用的例子代码,帮助开发者深入理解和应用Android SDK的各种功能。这些例子涵盖了从基础组件到高级特性的广泛内容,旨在提升...

    frameworks_services_jni_hardware_kernel.zip

    在Android系统中,`frameworks`, `services`, `jni`, `hardware`以及`kernel`是五个非常关键的组件,它们共同构建了Android操作系统的核心架构。`frameworks_services_jni_hardware_kernel.zip`这个压缩包文件提供了...

    Android中使用FCM进行消息推送

    - 接下来,添加Android应用到项目中,输入应用的包名并下载`google-services.json`文件,将其放在Android项目的`app`目录下。 - 在项目设置中,启用FCM服务并获取Server Key,这是服务端发送消息时所需的认证密钥...

    《C#开发Android应用实战 使用Mono for Android和.NET C#》源码2

    《C#开发Android应用实战 使用Mono for Android和.NET C#》是一本专注于使用C#语言在Android平台上开发应用程序的专业书籍。Mono for Android是Xamarin公司(现已被Microsoft收购)推出的一个框架,它允许开发者利用...

    Android查询来电归属地示例

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

    android实现webservices实例以及讲解

    本篇将深入探讨如何在Android应用中实现与Web Services的交互,并通过一个具体的示例来展示其实现过程。 #### Web Services 概述 Web Services是一种让应用程序可以通过网络进行通信和数据交换的技术。它使用标准...

    android 示例源码 apidemo

    Android SDK 提供的所有 API 的示例代码,包括视图(View)、布局(Layout)、事件处理(Event Handling)、数据存储(Data Storage)、网络通信(Network Communication)、多媒体(Multimedia)、位置服务(Location Services)...

    Android Service测试例子

    上面的这句话是官方的解释,这句化的第一句很明显的阐述了Service的使用场景,也就是说在不需要与用户进行交互(用户点击屏幕等触发事件的行为都是交互行为)的情景,以及某个操作需要在后台长时间运行的情况。...

Global site tag (gtag.js) - Google Analytics