这篇博文来介绍Android另一个十分重要的组件,Service。Service和Activity很类似,区别在于它运行在后台,不可见且没有界面。Service的优先级高于Activity,当系统负载过大时,会优先杀死Activty,但Service很难被系统清除。需要注意的是,Service同样运行在主线程中,不能直接进行耗时操作,而是需要在服务中新开一个线程,在该线程中做耗时操作。Service主要分为本地服务和远程服务。我们先来学习本地服务。

服务的启动方式


Service的启动方式主要有两种:Start方式和Bind方式,我们先来看这两种方式的特点

Start方式:

1.服务跟启动源没有任何联系

2.无法得到服务对象

Bind方式:

1.通过Ibinder接口实例,返回一个ServiceConnection对象给启动源

2.通过ServiceConnection对象的相关方法可以得到Service对象

我们这篇博文,先来介绍Start方式启动服务

Start方式启动服务


和启动Activity很类似,Service也是通过Intent来启动和停止,具体代码如下:

switch (view.getId())
{
case R.id.start_bt:
startintent=new Intent(MainActivity.this,StartService.class);
startService(startintent);
break;
case R.id.stop_bt:
stopService(startintent);
break;
}

启动,自定义的StartService类继承于Service类:

public class StartService extends Service
{
@Override
public void onCreate()
{
Toast.makeText(getApplicationContext(),"start_service",Toast.LENGTH_SHORT).show();
super.onCreate();
} @Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Toast.makeText(getApplicationContext(),"startcommand_service",Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy()
{
Toast.makeText(getApplicationContext(),"stop_service",Toast.LENGTH_SHORT).show();
super.onDestroy();
} @Nullable
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}

需要注意的是,onCreate方法,只会在Service第一次被创建时调用,在Service未被停止之前,多次StartService只会调用onStartCommand方法。

最后别忘了在Manifest文件中注册Service:

<service android:name=".StartService"></service>

Android学习——Service(一)的更多相关文章

  1. Android学习Service中遇到的问题

    今天学习service,然后遇到了一个force close,log中存在这个一句话: 05-23 14:13:26.408: E/AndroidRuntime(17616): android.con ...

  2. Android学习——Service(二)

    今天来介绍Service的第二种使用方式,Bind方式 Bind方式启动服务 Bind方式和Start方式启动很类似,都是通过Intent来启动,不同的是,Bind方式需要传入三个参数,如下: Int ...

  3. Android 学习笔记 Service服务与远程通信...(AIDL)

    PS:这一章节看的我有几分迷茫,不是很容易理解...不过还好总算是明白了一大半了...基本的迷惑是解决了... 学习内容: 1.跨应用启动服务... 2.跨应用绑定服务... 3.跨应用实现通信... ...

  4. Android 学习笔记 Service

    PS:前几篇的内容光是上代码了,也没有细细的讲解..感觉这样写很不好..因此还是多一些讲解吧... 学习内容: 1.了解Service... 2.Service的启动与停止.. 3.绑定与取消绑定Se ...

  5. Android学习笔记--服务(Service)

    1.服务概述 1.服务是Android四大组件之一,在使用上可以分为本地服务和远程服务,本地服务是指在不影响用户操作的情况下在后台默默的执行一个耗时操作,例如下载,音频播放等.远程服务是指可以供其他应 ...

  6. Android学习笔记(五一):服务Service(上)- IntentService

    转自 http://blog.csdn.net/flowingflying/article/details/7616333 对于需要长期运行,例如播放音乐.长期和服务器的连接,即使已不是屏幕当前的ac ...

  7. 【转】 Pro Android学习笔记(七七):服务(2):Local Service

    目录(?)[-] Local service代码 调用Local ServiceLocal Service client代码 AndroidManifestxml定义Serviceacitivty的l ...

  8. Android学习总结(二)——Service基本概念和生命周期

    好了,前面我们已经学习了Activity的知识,相信大家也有一定的理解,但是还是不能放松,Android四大组件,我们才学习了一个而已,接下我们继续学习Service.计划总结如下内容: 一.Serv ...

  9. Android学习总结(四)—— Activity和 Service进行通信

    一.Activity 和 Service进行通信的基本概念 前面我们学习我生命周期里面包含了启动和停止服务的方法,虽然服务器在活动里启动,但在启动了服务之后,活动与服务基本就没有什么关系了.我们在活动 ...

随机推荐

  1. (转)Go语言核心36讲之Go语言学习路线

  2. webpack 打包之后,两行溢出没有效果

    原因:发现-webkit-box-orient:vertical;并未设置成功解决:-webkit-box-orient: vertical; 加上注释包裹 .item-title { overflo ...

  3. RequireJs学习笔记之data-main Entry Point

    You will typically use a data-main script to set configuration options and then load the first appli ...

  4. 快速部署简单私有云CloudStack(上)

    前言: 亲身用了大半年,没出过重大毛病,也就是服务挂了,跟服务器也没啥关系.如果想更深入学习cloudstack可以试试高级网络,我是一直用的简单网络(扁平网络). 由来:CloudStack的前身是 ...

  5. MySQL的优化(大纲)

    参考:http://www.cnblogs.com/villion/archive/2009/07/23/1893765.html#3031899 MySQL的优化,主要可以考虑以下四方面: 1.数据 ...

  6. android studio Cannot resolve symbol '@drawable/XXX'等问题解决办法

    方法1."Build " -> "Clean project" 方法 2."Tools" -> "Android&qu ...

  7. php 命名空间与文件引入

    问题描述:这两天试着自己写一些东西,也是为了复习一下忘了的PHP基础知识,但是写到命名空间的时候遇到了一点问题,在这记录一下:当我写好文件之后,添加了命名空间,结果一直提示命名空间下类不存在,一直以为 ...

  8. vuex 实现vue中多个组件之间数据同步以及数据共享。

    http://pan.baidu.com/s/1hrJfpli  demo下载地址 前言 在一些项目中有很多数据状态之间要实现数据共享状态共享,例如购物车的数据.用户的登录状态等等.vue父元素是可以 ...

  9. (C++学习)关于CString的一些疑问

    #include <iostream> #include <string> #include <afx.h> #include <vector> usi ...

  10. [android] 界面切换的简单动画

    1. 新建个位移动画的xml文件 Activity中开启动画 使用AnimationUtils类加载动画资源文件 left_to_right.xml <?xml version="1. ...