这篇博文来介绍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. 在ionic3+angular4项目中添加自定义图标

    在阿里图标库下载自己所需要的图标解压为一下目录 把iconfont.xx文件全部放到src/assets/fonts/文件夹下,可以全部替换里面的文件,但是要把之前iconfont.css文件下的文件 ...

  2. (转)bash条件判断之if语句

    http://blog.51cto.com/64314491/1629175---------bash条件判断之if语句(一) http://blog.51cto.com/64314491/16292 ...

  3. webpack查缺补漏

    webpack是模块化打包工具,通过webpack,可以使得我们更加方便地组织代码.压缩.转译等等. 但是学习webpack也需要一定的成本,这里记录使用webpack许久以来一些模糊的知识点,方便以 ...

  4. Anaconda环境变量配置问题解决

    (右键)我的电脑==>属性==>高级系统设置==>环境变量==>Path 按照下图添加: 总共4个,如果出现“此环境变量太大...”,删除或者缩短其他环境变量地址. 然后重新打 ...

  5. BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气

    最近想在微信上面实现天气查询,分两个步骤: 1.被动回复:输入天气.xx天气获取天气情况 2.主动推送:每天定时推送天气(针对24小时内产生交互的人) 目前已经实现第一个步骤,如下: 现将实现此功能环 ...

  6. EntityFrameWork Code First 多对多关系处理

    场景2: 一个文章类别(Category)下含有多篇文章(Article),而文章也可能对应多个类别 Article和Category的代码更改如下: /// <summary> /// ...

  7. nginx内网代理为外网地址

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  8. 本地IDC机房数据库容灾解决方案

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB 发表于云+社区专栏 作者介绍:李明,腾讯云数据库架构师华南区负责人,曾在某专业数据库服务商.51jo ...

  9. Hibernate 多对多拆分 两个多对一

  10. Java - 多线程中的不变性问题

    这篇记录一下保证并发安全性的策略之——不变性. (注意:是Immutable,不是Invariant!) 将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据 ...