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

android Service类简介

阅读更多
    Service类与 Activity类的原理类似,只是Service类并不像Activity一样提供与用户交互的表示层。Service是一种后台运行的Android组件,位于android.app包下。

    当应用程序不需要在前台显示某些界面时,可以使用Service来完成,比如后台的数据计算,后台音乐播放等。

    这个小例子是同时介绍Service组件与BroadcastReceiver组件联合使用的方法,在例子中使用java代码动态注册 BroadcastReceiver 并且通过前台的用户界面控制后台服务的进行。

  运行如下







    strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">请启动 Service</string>
    <string name="app_name">xh_test_03</string>
    <string name="myButton1">启动Service</string>
    <string name="myButton2">停止Service</string>
</resources>


  布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    >
<TextView  
	android:id="@+id/myTextView"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="20px"
    android:gravity="center_horizontal"
    android:text="@string/hello"
    />
<Button
	android:id="@+id/myButton1"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="@string/myButton1"/>
<Button
	android:id="@+id/myButton2"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="@string/myButton2"/>
</LinearLayout>

   Service类 MyService
package xiaohang.zhimeng;

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

public class MyService extends Service {
	MyThread myThread;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onDestroy() {
		myThread.flag = false;
		super.onDestroy();
	}

	@Override
	public void onStart(Intent intent, int startId) {
		myThread = new MyThread();
		myThread.start();
		super.onStart(intent, startId);
	}

	class MyThread extends Thread {
		boolean flag = true;
		int c = 0;

		@Override
		public void run() {
			while (flag) {
				Intent i = new Intent("xiaohang.zhimeng.myThread");
				i.putExtra("myThread", c);
				sendBroadcast(i);
				c++;
				try {
					// 睡眠指定毫秒数
					Thread.sleep(1000);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	};
}



Activity类 Activity01
package xiaohang.zhimeng;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class Activity01 extends Activity {
	Button button1;
	Button button2;
	TextView myTextView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		button1 = (Button) this.findViewById(R.id.myButton1);
		button2 = (Button) this.findViewById(R.id.myButton2);
		myTextView = (TextView) this.findViewById(R.id.myTextView);

		button1.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent i = new Intent(Activity01.this, MyService.class);
				startService(i);
				Toast.makeText(Activity01.this, "Service启动成功",
						Toast.LENGTH_SHORT).show();
			}
		});
		button2.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				// 创建Intent
				Intent i = new Intent(Activity01.this, MyService.class);
				stopService(i);
				Toast.makeText(Activity01.this, "Service停止成功",
						Toast.LENGTH_SHORT).show();
			}
		});
		// 创建IntentFilter过滤器
		IntentFilter intentFilter = new IntentFilter(
				"xiaohang.zhimeng.myThread");
		MyBroadcasReceiver myBroadcasReceiver = new MyBroadcasReceiver();
		registerReceiver(myBroadcasReceiver, intentFilter);
	}

	public class MyBroadcasReceiver extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {

			// 获得Intent中的数据
			Bundle myBundle = intent.getExtras();
			int myInt = myBundle.getInt("myThread");
			if (myInt < 10) {
				myTextView.setText("后台Service运行了" + myInt + "秒");
			} else {
				Intent i = new Intent(Activity01.this, MyService.class);
				// 停止服务
				stopService(i);
				myTextView.setText("后台Service在" + myInt + "秒后停止运行");
			}
		}
	}
}

 
  最后在若弱的 提醒大家一句 服务需要在 AndroidManifest.xml中声明一下



源码见附件
  • 大小: 44 KB
  • 大小: 15.5 KB
  • 大小: 24.4 KB
  • 大小: 14.5 KB
分享到:
评论
2 楼 wangkaiyuan_1982 2012-05-04  
AndroidManifest.xml中声明
1 楼 xujun029 2011-09-18  
 

相关推荐

    android service 简单实例源代码

    在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...

    android普通类绑定service

    2、针对对普通类绑定service进行测试 3、普通类可以绑定service,但是需要activity传入一个Contex参数 4、该测试可以将业务代码和activity或者service分离,实现程序更好的结构,提高代码可读性 5、欢迎大家一起讨论...

    QT for Android下Service的创建

    Service在Android系统中扮演着重要的角色,它可以在后台长时间运行,即使用户离开应用界面,Service依然可以执行任务,如播放音乐、定时任务等。在QT for Android环境下创建Service,可以帮助开发者充分利用Qt的便利...

    Android service讲解文档ppt

    1. 创建一个新的Service类,继承自`android.app.Service`。 2. 在Service类中重写关键方法,如`onStartCommand()`和`onBind()`。`onStartCommand()`用于启动服务并返回服务的启动行为,`onBind()`用于提供与服务进行...

    android service toast 01

    在Service中使用Log类记录关键步骤,可以帮助调试和理解代码执行流程。 总之,Service和Toast在Android开发中都有其独特的应用场景。理解它们的使用方法和注意事项,对于构建高效、稳定的应用至关重要。通过...

    Android-Service与Activity传值

    在Android Studio中,可以通过新建一个类并继承自`Service`。例如,我们可以创建一个名为`MyService`的类,并重写`onStartCommand()`方法,这里是我们执行后台任务的地方。 2. **启动Service** 在`Activity`中启动...

    Android Service简单实例

    在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,即使用户界面关闭也能继续工作。本篇文章将深入探讨`startService`类型的Android Service,通过一个简单的实例来展示其工作原理和...

    Android Service 与 定时器

    首先,你需要创建一个`Service`类,继承自`android.app.Service`。在`onCreate()`方法中初始化定时器,`onStartCommand()`中启动定时任务。 2. **定义TimerTask** 创建一个新的`TimerTask`类,重写`run()`方法,...

    android service下载资源,同时解压资源

    在Android开发中,Service是一种非常重要的组件,它可以在后台长时间运行,执行一些不需要与用户交互的任务。本示例中,我们关注的是如何利用Service来实现资源的异步下载,并且在下载完成后对ZIP文件进行解压。这个...

    Android Service下载,EventBus更新界面

    首先,Android Service是Android系统提供的一个类,允许开发者创建在后台运行的长期运行任务。Service不提供用户界面,通常用于执行如音乐播放、数据同步、后台下载等任务。Service有两种启动方式:startService()和...

    Android service

    1. **创建Service**:首先,我们需要定义一个Service类,继承自Android的`Service`类,并重写其生命周期方法,如`onStartCommand()`和`onDestroy()`。 2. **启动Service**:在Activity中,可以通过调用`start...

    Android Service Demo

    "Android Service Demo"是一个示例项目,它展示了如何在Android应用中使用Service,尤其是结合AIDL(Android Interface Definition Language)来实现进程间通信(IPC,Inter-Process Communication)。 首先,我们...

    android service的小实例

    在Android应用开发中,Service是四大组件之一,用于在后台执行长时间运行的操作,即使用户界面不在活动状态。本文将通过四个小实例详细介绍Android Service的四种启动方式:启动方式、绑定方式、线程方式以及AIDL...

    Android Service深入解析Demo

    在Android应用开发中,Service是四大组件之一,它在后台长时间运行,不依赖于任何用户界面,用于执行长时间运行的任务,如播放音乐、网络通信等。这篇博客"Android Service深入解析Demo"通过实例深入讲解了Service的...

    Android防止service多次执行startCommand

    在Service类中,`onStartCommand`是处理启动命令的主要入口,它接收Intent参数并返回一个整型值,这个返回值决定了Service的生命周期和行为。开发者通常在重写这个方法时,会进行业务逻辑处理。 防止`startCommand`...

    Android-AndroidService下载文件

    在Android应用开发中,`Service` 是一个非常重要的组件,它允许应用程序在后台长时间运行操作,即使用户已经离开或关闭了应用界面。本教程将详细讲解如何利用Android的`Service` 组件来实现文件下载功能。 一、...

    Android Service 实现下载,前台、通知栏同步更新

    在Android应用开发中,Service是用于执行长时间运行操作的一个组件,比如后台下载任务。本教程将详细介绍如何使用Android Service来实现文件下载,并在前台显示进度,同时通过通知栏同步更新下载进度。 首先,我们...

    Android Service

    然后,在MyService.java文件中实现Service类: ```java public class MyService extends Service { @Override public void onCreate() { super.onCreate(); // 初始化工作 } @Override public int ...

    android Service example

    定义Service类时,需要继承自Android的`Service`类,并重写一些关键方法,如`onStartCommand()`和`onBind()`。`onStartCommand()`用于响应`startService()`调用,而`onBind()`则与`bindService()`关联,提供与...

Global site tag (gtag.js) - Google Analytics