这篇博文来介绍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. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  2. js从后台取值并绑定到元素上

    用ajax从后台取值不是什么有技术含量的活计,把后台取来的值绑定到Vue对象上也不算难,但每一次向后台拿数据的时候都得写上这么一段代码就十分痛苦了. 于是我写了这么一小段js代码,能够自己根据url去 ...

  3. Java中String与Date格式之间的转换

    转自:https://blog.csdn.net/angus_17/article/details/7656631 经常遇到string和date之间的转换,把相关的内容总结在这里吧: 1.strin ...

  4. Oracle DMP

    通过DMP对Oracle数据库进行导入导出 打开“开始”--->输入cmd,打开cmd命令窗口,输入以下命令即可 1导出 (1)将数据库ORACLE完全导出,用户名system密码manager ...

  5. (转)Apache和Nginx运行原理解析

    Apache和Nginx运行原理解析 原文:https://www.server110.com/nginx/201402/6543.html Web服务器 Web服务器也称为WWW(WORLD WID ...

  6. 持续集成Jenkins入门【截图】

  7. 等待页面元素(webdriverwait)

    前言 在脚本中加入太多的 sleep 后会影响脚本的执行速度,虽然 implicitly_wait ()这种方法隐式等待方法一定程度上节省了很多时间.但是一旦页面上某些 js 无法加载出来(其实界面元 ...

  8. httpclient文件下载

    http://blog.csdn.net/nupt123456789/article/details/42721003

  9. poj 1168 The Triangle

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39169   Accepted: 23518 De ...

  10. WEBPACK & BABEL 打包项目

    本文首发于 BriFuture's Blog. 最近在用 Vue 重写之前的一个项目 Compass,这个项目以前是用 QML + JavaScript 在 Qt 平台上搭建的.这是我本科毕设时做的一 ...