android Service简介及启动关闭方式
(1)Service是Android系统中的四大组件之一,和Activity是同一层次的组件;它是一种生命周期较长,没有可视化界面,运行于后台的一种服务;例如,我们听音乐可以使用Service,下载东西可以使用Service,我们还可以用它来记录我们所在地理位置的改变,或者启动一个服务来一直监听某种动作;我们还可以使用Service更新Content Provider,发送Intent以及启动系统的通知等;
(2)Service生命周期不太复杂,它只继承了onCreate(),onStartCommand(),onDestroy()方法;它的启动方式有两种:
Context.startService() ->onCreate()- >onStartCommand()->Service running--调用Context.stopService() ->onDestroy();
Context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()
需注意的是:原本的onStart()方法已经deprecated,已经被onStartCommand()替代,但onStartCommand()内部则是先调用了onStart();
生命周期如图:
实例如下:
点击startServiceButton时:多点击几次;
点击stopServiceButton时;
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/startButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="startServiceButton" /> <Button android:id="@+id/stopButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="stopServiceButton" /> </LinearLayout>
FirstService.java
package com.xiaozhang.androidservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class FirstService extends Service { @Override public IBinder onBind(Intent intent) { System.out.println("Service onBind!"); return null; } @Override public void onCreate() { super.onCreate(); System.out.println("Service onCreate();"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("startId" + startId); System.out.println("Service onStartCommand()"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { System.out.println("Service onDestory()"); super.onDestroy(); } }
MainActivity.java
package com.xiaozhang.androidservice; 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 startButton = null; private Button stopButton = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startButton = (Button) findViewById(R.id.startButton); stopButton = (Button) findViewById(R.id.stopButton); startButton.setOnClickListener(new StartServiceListener()); stopButton.setOnClickListener(new StopServiceListener()); } class StartServiceListener implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, FirstService.class); startService(intent); } } class StopServiceListener implements OnClickListener { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, FirstService.class); stopService(intent); } } }
最后还需要把服务给注册到AndroidManifest.xml中:
<service android:name=".FirstService"></service>
内容一部分转自:
http://www.cnblogs.com/zhangdongzi/archive/2012/01/08/2316711.html
推荐阅读:
http://blog.csdn.net/ithomer/article/details/7364024
android Service简介及启动关闭方式的更多相关文章
- android service两种启动方式
android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...
- Android service介绍和启动方式
1.Android service的作用: service通常是用来处理一些耗时操作,或后台执行不提供用户交互界面的操作,例如:下载.播放音乐. 2.Android service的生命周期: ser ...
- Linux 平台MySQL启动关闭方式总结
MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二. 1:使用mysqld启动.关闭MySQL服务 mysql ...
- Android Service 简介
Service是Android系统中的一种组件,它跟Activity的级别差不多,但是它不能自己运行,只能后台运行,并且可以和其他组件进行交互.Service是没有界面的长生命周期的代码.Servic ...
- hadoop的两类配置文件及3种启动/关闭方式
hadoop配置文件 默认配置文件:四个模块相对应的jar包中:$HADOOP_HOME/share/hadoop *core-default.xml *hdfs-defa ...
- Service 简介 启动方式 生命周期 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android Service总结03 之被启动的服务 -- Started Service
Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...
- Android菜鸟的成长笔记(16)——Service简介
Service是Android四大组件之一 1.Service与Activity的区别在:Service一直在后台运行,没有用户界面. 2.选择Activity与Service的标准:如果某个程序组件 ...
- 启动/关闭oracle服务有三种方式
启动oracle服务有三种方式: 1 从控制面板 2 使用MS-DOS命令 3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动ora ...
随机推荐
- sql语句相关操作
create user test identified by test default tablespace users temporary tablespace temp quota 3M on u ...
- [深入react] 4.牛逼闪闪的虚拟DOM
React.createElement嵌套后的结果就是虚拟dom,虚拟dom听着很高端,其实就是一个json,类似: { type:'div', props:{ className:"box ...
- lesson7:java线程池
在jdk1.5的版本中,java提供了语言级别的线程池,对于需要使用线程池的业务系统和中间件框架等提供了方便的选择.我认为线程池主要有两个方面的作用:第一就是防止因为外部条件的变化,造成线程数的瞬间飙 ...
- HtmlParser 2.0 中文乱码问题
对于HTMLParser 2.0 工具包我们需要修改其中的Page.java文件使其适用中文的html文件分析. 主要是把protected static final String DEFAULT_C ...
- 使用Eclipse生成自动生成apk
使用Eclipse生成自动生成apk 在eclipse的Preferences -> Android -> Build中有一项“Skip packaging and dexing ...
- ssh远程登录linux live系统
要想ssh远程登录,须要准备两件事:配置同网段IP和开启SSH服务. 因为live系统没有IP,所以首先须要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,liv ...
- ProtoBuf 的java使用
碰巧用到Proto,算是笔记吧算是笔记吧, windows : 1,两个文件:proto.exe, protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个pro ...
- (转)webservice 测试窗体只能用于来自本地计算机的请求
Question: WebService部署成站点之后,如果在本地测试webservice可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或者"The test form is ...
- DateTime对象反序列化的那些事
今天在Android的Json反序列化过程中,Date类型无法转化成自己想要的格式,鉴于之前在C#的反序列话中也遇到过这个问题,解决的同时,顺手做个总结,供自己及需要的人日后查阅. 将Da ...
- 腾讯RTX登录提示失败问题及处理办法
出现问题时图片: 解决步骤: 首先ping一下RTX管理器所在的的ip地址 telnet一下服务器的端口 8000,8010 是否能通. 具体操作: 在无法登陆的客户端电脑上开始-运行-输入cmd 确 ...