初学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资源的存储方式
随机推荐
- ACM学习历程—HDU4956 Poor Hanamichi(模拟)
Poor Hanamichi Problem Description Hanamichi is taking part in a programming contest, and he is assi ...
- Ubuntu——跟新flash
使用命令: apt-get install adobe-flashplugin 即可
- 【转】Pro Android学习笔记(五):了解Content Provider(上)
Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider ...
- cassandra自启动服务器脚本
新建一个文件. vi /etc/rc.d/init.d/vi cassandra2 #!/bin/sh # chkconfig: # description: service -- # process ...
- Linux中的nc测试端口是否开放
nc测试端口是否开放 在Linux中有一个级强大的网络工具netcat,在默认情况下面都是没有安装的,现在介绍一下安装过程 其实安装很简单 一.安装使用 1.只需输入命令yum安装: [root@SZ ...
- ScrollView cannot scroll in Slidinguppanellayout 解决办法
xml源码如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:an ...
- jquery中对于批量deferred的处理
此代码仿照jquery源码中$.when()的实现 function test(i) { var dfd = $.Deferred(); if(i%2 == 0) { console.log(&quo ...
- day12Session案例 JSP
2 Session案例 用户登录场景 package gz.itcast; import java.io.IOException; import java.io.PrintWriter; import ...
- 12. nc/netcat 用法举例
nc命令用法举例 什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可 ...
- qsc52(三角形线性插值)
题目链接:http://qscoj.cn/problem/52/ 题意:中文题诶- 思路:水题,只要知道三角形插值和判断点在三角形内就OK了 关于三角形插值:http://www.cnblogs.co ...