初学Android,创建,启动,停止Service(五十八)
Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是无界面的
开发Service与开发Activity的步骤类似
1.定义一个继承Service的子类
2.在AndroidManifest.xml文件中配置该Service
Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources(),getContentResolver()等方法
下面写一个简单的Service例子
先定义一个Service类
- package WangLi.IO.FirstService;
- import android.app.Service;
- import android.content.Intent;
- import android.os.IBinder;
- public class FirstService extends Service {
- //必须实现的方法
- @Override
- public IBinder onBind(Intent intent) {
- // TODO Auto-generated method stub
- return null;
- }
- //Service被创建时回调方法
- public void OnCreate()
- {
- super.onCreate();
- System.out.print("Service is Created");
- }
- //Service启动时回调该方法
- public int onStartCommand(Intent intent,int flags,int startId)
- {
- System.out.println("Service is Started");
- return START_STICKY;
- }
- //Service被关闭之前被回调
- public void onDestroy()
- {
- super.onDestroy();
- System.out.println("Service is Destroyed");
- }
- }
上面几个关键方法都可以看到,Service的执行就在方法内写上相应的功能代码,在不同阶段执行
Service跟Activity一样,也需要在AndroidManifest.xml文件中注册,注册配置配置<intent-filter.../>子元素,设置Service可被哪些Intent启动
- <service android:name="FirstService" >
- <intent-filter>
- <action android:name="WangLi.IO.First_Service"></action>//注意小必须要注册!!!!
- </intent-filter>
- </service>
建一个界面类Activity,放上两个按钮,一个用来启动Service,一个用来停止Service
- package WangLi.IO.FirstService;
- 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 {
- Button start, stop;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 获取界面上的start,stop两个按钮
- start = (Button) findViewById(R.id.start);
- stop = (Button) findViewById(R.id.stop);
- // 创建启动Service的Intent
- final Intent intent = new Intent();
- // 为Intent设置Action属性
- intent.setAction("WangLi.IO.First_Service");
- start.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- // 启动指定Service
- startService(intent);
- }
- });
- stop.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 停止指定Service
- stopService(intent);
- }
- });
- }
- }
注意startService,和stopService这两个方法
下面是程序界面

下面logcat记录的Service启动和关闭过程

此外,有一点值得注意,多次启动一个已有的Service组件将不会再调用onCreate方法,但每次启动时都会回调onStart方法
注意:bindservice和startservice的启动对应的方法!
初学Android,创建,启动,停止Service(五十八)的更多相关文章
- Andriod的国际化-android学习之旅(五十八)
android资源国际化
- Android简易实战教程--第五十话《动画扫描》
祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...
- Android创建启动画面[转]
每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...
- Android创建启动画面
每一个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发人员信息.假设应用程序启动时间比較长,那么启动界面就是一个非常好的东西,能够让用户耐心等待这 ...
- 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作
准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...
- Android笔记(五十八)Android总结:四大组件——Activity篇
什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentV ...
- 从头学起android<AudioManager 声音编辑器.五十.>
我们用android经常使用的时候,手机的声音增大和缩小操作.在设定场景模式,它往往使用静音和振动运行,这通常是AudioManager来控制的. 今天我们就来看一下AudioManager 的使用. ...
- Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》
转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...
- Android的资源类型和存储方式简介-android学习之旅(五十二)
android资源的类型 android资源的存储方式
随机推荐
- 洛谷P1474货币系统——背包方案计数
题目:https://www.luogu.org/problemnew/show/P1474 完全背包,注意方案计数的方法. 代码如下: #include<iostream> #inclu ...
- win32 UNICODE 支持
#include <string> #ifdef _UNICODE #define tstring std::wstring #define __T(quote) L##quote #el ...
- H5 开发
一.Html5手机站开发概述 Html5app开发就是HTML5开发语言制作的移动手机网站.移动站点顾名思义,就是指一切用移动终端访问的网络站点(通常指网站),像通常用的手机.PAD( ...
- Python中datetime的使用和常用时间处理
datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间: >>> print dateti ...
- QT时钟绘制
Demo的效果 资源占用还能接受 运行久一点内存就下去了 下面是Demo的代码 #include "mainwindow.h" #include "ui_mainwind ...
- ASP.NET Core分布式项目实战
ASP.NET Core开发者成长路线图 asp.net core 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ ...
- array mysql_fetch_row(resource result)
array mysql_fetch_row(resource result) 函数返回从结果集result中取得的行生成的数组,若到了最后一行之后则返回false,每个结果的列存储在一个数组的单元中 ...
- win32 API中GetSystemMetrics函数
1. SM_ARRANGE: 用于说明系统如何安排最小化窗口,根据显示器的不同系统数据可能有所不同.其包含一个起始位置和方向.关于在程序中怎么使用我还没有见个这样的代码. 起始位置可为下列值之一: A ...
- 自定义Swap
网上看到的一篇文章加深了对指针的了解,收藏一下 自定义的swap函数是一个老掉牙的问题,而这个问题对于理解指针和内存中的栈是很有帮助的 一般自定swap函数是这样的: 1.swap函数的功能是实现两个 ...
- 洛谷P2280 [HNOI2003]激光炸弹
P2280 [HNOI2003]激光炸弹 题目描述 输入输出格式 输入格式: 输入文件名为input.txt 输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ...