`
从此醉
  • 浏览: 1043249 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Service与BroadcastReceiver——(1)Service简介

 
阅读更多

Service是Android四大组件之一

1、Service与Activity的区别在:Service一直在后台运行,没有用户界面。

2、选择Activity与Service的标准:如果某个程序组件需要在运行时向用户呈现某种界面,或者改程序需要和用户进行交互,就需要用Activity,否则需要考虑使用Service.

3、Android系统本身提供了大量的Service组件,开发者可以通过Service来操作Android系统。

4、Service组件有自己的生命周期。

5、Service与Activity都是从Context派生而来的,都可以调用Context里面定义的如getResources()、getContentResolver()等方法。

下面我们来先创建一个Service并启动

(1)定义一个继承Service的子类。

package com.example.testservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class FirstService extends Service{

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}
	
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		System.out.println("onCreate");
	}
	
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		System.out.println("onStartCommand");
		return super.onStartCommand(intent, flags, startId);
		
	}
	
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		System.out.println("onDestroy");
	}

}


注意:上面的onBind()方法是必须实现的方法。
(2)在AndroidMainfest.xml文件中配置该Service

<service android:name=".FirstService">
            <intent-filter >
                <action android:name="com.meritit.service.FIRST_SERVICE"/>
            </intent-filter>
 </service>

如果希望Service组件做某些事情,只要在onCreate()或onStartCommand()方法中定义相关业务代码即可。

(3)运行Service

运行Service的方法有两种:

a: 通过Context的startService()方法:通过该方法启动Service,访问者与Service之间没有关联,即使访问者退出了,Service任然运行。

b:通过Context的bindService()方法:使用该方法启动Service,访问者与Service绑定在了一起,访问者一旦退出,Service也就终止了。

下面先通过第一种方式运行Service

package com.example.testservice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button start;
	private Button stop;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//获取程序界面中的start、stop两个按钮
		start = (Button) findViewById(R.id.start);
		stop = (Button) findViewById(R.id.stop);
		
		final Intent intent = new Intent();
		intent.setAction("com.meritit.service.FIRST_SERVICE");
		
		start.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				startService(intent);
			}
		});
		
		stop.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				stopService(intent);
			}
		});
	}
}

从上面代码中可以看出,启动、关闭Service非常容易,只需要调用Context里面定义的startService()方法和stopService()方法。

连续单击“启动Service"按钮,程序将会连续多次启动Service,LogCat如图:


从图中我们可以看出,onCreate方法只被调用了一次,这说明:每次Service被第一次启动调用onCreate()方法,多次启动已经启动的Service组件将不会再回调onCreate()方法啊,但每次启动时都会回调onStartCommand()方法。


下一篇将介绍:绑定本地Service并与之通信


分享到:
评论

相关推荐

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(完整版)

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全的目录

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google+Android+SDK开发范例大全

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android sdk 开发范例大全 部分章节代码

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK 开发范例大全01

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    Google Android SDK 开发范例大全02

    6.4 开始与停止系统服务——Service与Runnable整合并用 6.5 通过短信发送email通知——BroadcastReceiver与Intent整合 6.6 手机拨接状态——PhoneStateListener之onCallStateChanged 6.7 有来电,发送邮件通知——...

    实验四-Android基本组件交互实验.doc

    当系统调用bindService方法时,如果该Service未启动 ,则会调用onCreate方法完成初始化工作,然后会将该Service和Context对象(如Activ ity)进行绑定,当被绑定的Context对象被销毁时,与之绑在一起的Service也会停止...

    android开发入门与实战(下)

    第10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 本章小结 第11...

    android开发入门与实战(上)

    第10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 本章小结 第11...

    android开发入门教程

    第10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 本章小结 第11...

    Google.Android开发入门与实战

    第10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 本章小结 第11...

    深入Android【三】——组件入门

    Android组件横看成岭侧成峰,远近高低各不同。--《题西林壁》组件(Component),在谈及所谓架构和重用的时候,是一个重要的...具体说来,Android有四大组件四喜丸子:Activity、Service、BroadcastReceiver、Conten

    Android Debug Bridge(安卓调试桥) tools platform-tools adb命令行工具

    Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下: 查看前台 Activity命令:adb shell dumpsys activity activities | findstr ...

Global site tag (gtag.js) - Google Analytics