service是运行在后台的服务,你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。

接下来分析一下service 的生命周期:

1:actiivty_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/btn_bind_service"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Bind Service"/> <Button
android:id="@+id/btn_stop_bind"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btn_bind_service"
android:text="Stop Bind"/> <Button
android:id="@+id/btn_start_service"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btn_stop_bind"
android:text="Start Service"/> <Button
android:id="@+id/btn_stop_service"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/btn_start_service"
android:text="Stop Service"/>
</RelativeLayout>

2:ServiceDemo.java

public class ServiceDemo extends Service{
private static final String TAG="ServiceDemo";
public static final String ACTION="com.yan.service.ServiceDemo"; @Override
public IBinder onBind(Intent arg0) {
Log.i(TAG, "onBind");
return null;
} @Override
public void onCreate() {
Log.i(TAG,"onCreate");
super.onCreate();
} @Override
@Deprecated
public void onStart(Intent intent, int startId) {
Log.i(TAG, "onStart");
super.onStart(intent, startId);
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand");
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy() {
Log.i(TAG, "onDestroy");
super.onDestroy();
} @Override
public boolean onUnbind(Intent intent) {
Log.i(TAG, "onUnbind");
return super.onUnbind(intent);
}
}

3:MainActivity.java

public class MainActivity extends Activity {
private Button btnBindService=null;
private Button btnStopBind=null;
private Button btnStartService=null;
private Button btnStopService=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); btnBindService=(Button)findViewById(R.id.btn_bind_service);
btnStopBind=(Button)findViewById(R.id.btn_stop_bind);
btnStartService=(Button)findViewById(R.id.btn_start_service);
btnStopService=(Button)findViewById(R.id.btn_stop_service); btnBindService.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent=new Intent(ServiceDemo.ACTION);
bindService(intent,sc,BIND_AUTO_CREATE);
}
}); btnStopBind.setOnClickListener(new OnClickListener(){
public void onClick(View view){
unbindService(sc);
}
}); btnStartService.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent=new Intent(ServiceDemo.ACTION);
startService(intent);
}
}); btnStopService.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent=new Intent(ServiceDemo.ACTION);
stopService(intent);
}
});
} ServiceConnection sc=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
Log.i("SC", "onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
Log.i("SC", "onServiceDisconnected");
}
};
}

4:AndroidManifest.xml

<service
android:name="com.yan.service.ServiceDemo">
<intent-filter>
<action android:name="com.yan.service.ServiceDemo"/>
</intent-filter>
</service>

5:运行结果分析。

(1)点击StartService:

执行 onCreate()->onStartCommand()->onStart()

(2)点击StopService:

执行 onDestroy()

(3)点击BindService

执行 onCreate()->onBind()

(4)点击StopBind

执行 onUnbind()->onDestory()

Android 之Service的更多相关文章

  1. Android服务(Service)研究

    Service是android四大组件之一,没有用户界面,一直在后台运行. 为什么使用Service启动新线程执行耗时任务,而不直接在Activity中启动一个子线程处理? 1.Activity会被用 ...

  2. Android中Service 使用详解(LocalService + RemoteService)

    Service 简介: Service分为本地服务(LocalService)和远程服务(RemoteService): 1.本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  3. android 入门-Service实时向Activity通过BroadcastReceiver传递数据

    引文: http://www.cnblogs.com/linjiqin/p/3147764.html <RelativeLayout xmlns:android="http://sch ...

  4. android 入门-Service

    sdk 1.7 package com.example.hellowrold; import java.util.Random; import com.example.hellowrold.R.id; ...

  5. Android中Service(服务)详解

    http://blog.csdn.net/ryantang03/article/details/7770939 Android中Service(服务)详解 标签: serviceandroidappl ...

  6. Android中Service的使用

    我个人的理解是:我们平时使用的android系统的app的后台应用,就是这个原理 可以利用Service实现程序在后台运行,依照这个原理,可以通过Service来实现关键代码的运行与实现. <一 ...

  7. 【Android 】Service 全面总结

    1.Service的种类 按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外L ...

  8. Android Activity/Service/Broadcaster三大组件之间互相调用

    我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...

  9. Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  10. Android 利用Service BroadcastReceiver实现小例子

    Activity: package com.example.test; import android.app.Activity; import android.content.Context; imp ...

随机推荐

  1. [Java] JVM 在执行 main 方法前的行为

    JVM 执行一个 Java 程序时,先从某个指定的 Java 类的 main 方法开始执行代码,同时,传一个字符串数组作为 main 方法的参数.例如在 Unix 系统上,执行下面的命令 java T ...

  2. 辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网

    辛巴达:帮电商打造ZARA式开放供应链体系 - 行业网站 - 亿邦动力网 辛巴达:帮电商打造ZARA式开放供应链体系

  3. Code Snippet Library

    你可以将自己常用的代码放到里面,给它命名,设置快捷键,以后想用这段代码的时候只要按快捷键,就会出现提示,直接将这段代码显示出来,十分高效. 比如我经常会用到一个动画:[UIView beginAnim ...

  4. 计算两点距离 ios

    //计算两点距离 -(float)distanceBetweenTwoPoint:(CGPoint)point1 point2:(CGPoint)point2 { ) + powf(point1.y ...

  5. android开发步步为营之68:Facebook原生广告接入总结

    开发应用的目的是干嘛?一方面当然是提供优质服务给用户,还有一方面最重要的还是须要有盈利.不然谁还有动力花钱花时间去开发app? 我们的应用主攻海外市场,所以主要还是接入国外的广告提供商.本文就今天刚完 ...

  6. tail和head命令

    [root@rhel7 ~]# cat rusky --cat命令查看文件内容 line1 line2 line3 line4 line5 line6 line7 line8 line9 line10 ...

  7. python单元测试之unittest

    unittest是python标准库,从2.1开始就有. 标准的使用流程: 1:实现一个unittest.TestCase的子类 2:在其中定义以_test开头的实例函数 3:用unittest.ma ...

  8. php按址传递bug

    foreach ($product_info as $key=>&$value){            $value['bookCity'][]=array(              ...

  9. 前端CSS兼容的一些思路

    半夜睡不着觉,起来写第一博. 近段时间,公司要给一个网站产品增加一个换色功能,安排我负责该事项. 之前参与过一些定制项目,是基于该产品的二次开发,说实话里面的前端结构很混乱.所以第一步就是将html前 ...

  10. MySQL导入导出命令

    前言 如果使用图形化界面,那么可以通过几个点击即可导入.导出.本文是假定你没有安装那些如Navicat等GUI管理软件. 场景 假设在电脑A和电脑B中都装有MySQL数据库管理系统,并且在电脑A的My ...