一个启动类型的服务是另一个组件通过调用startService()方法,产生一个调用服务的onStartCommand()方法而启动的服务。
当一个服务被启动时,它有一个独立与启动它的组件的生命周期,并且这个服务能够无限期的在后台运行,即使启动它的组件被销毁了。因此这个服务应该在工作结束时通过调用stopSelf()方法来终止自己,或者另一个组件通过调用stopService()方法也能终止这个服务。
像Activity这样的应用程序组件能够通过调用startService()方法来启动服务,并且给指定的服务传递一个Intent对象,同时包含一些服务所使用的数据。服务在onStartCommand()方法中接受这个Intent对象。
例如,假设一个Activity需要把一些数据保存到在线数据库中。这个Activity就能启动一个服务,并且把要保存的数据通过一个Intent对象传递给startService()方法。这个服务在onStartCommand()方法中接受这个Intent对象,连接到互联网,并且执行数据库事务。当事务结束,这个服务就自己终止并销毁。
警告:服务运行在与声明它的应用程序相同的进程中,并且是在应用程序的主线程中。默认情况下,如果你的服务要执行密集或阻塞操作,而用户又要跟同一个应用程序的一个Activity进行交互,那么这个服务就会降低Activity的性能。要避免影响应用程序的性能,你应该在服务的内部启动一个新的线程。
通常,你能够继承两个类来创建被启动类型的服务:
Service
这是所有服务的基类。当你继承这个类时,重要的是你要给所有的服务工作创建一个新的线程,因为服务要使用你的应用程序的主线程,默认情况可能降低应用程序正在运行的Activity的性能。
IntentService
这是一个Service类的子类,它使用工作线程来依次处理所有的启动请求,如果你不想要服务同时处理多个请求,那么这是最好的选择。需要你做的所有工作就是实现onHandleIntent()方法,它接受每个启动请求的Intent对象,以便完成后台工作。
注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。
如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar
分享到:
相关推荐
QT for Android下多个 Service的创建启动,包括Service通过Jni外调QT信号槽实现,对研究QT在安卓下的跨平台开发很有帮助
还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...
1、startService开启服务以后,与activity就没有关联,不受影响,独立运行,需要stopService关闭,否则Activity移除栈后将一直运行(kill杀不死). 2、bindService开启服务以后,与activity存在关联,退出activity时...
Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...
Android 自动启动服务,也可以手动启动或停止指定的服务,这只是一个例子,演示在android环境下,如何在后台自动运行Service。 public void onDestroy() {//重写的onDestroy方法 myThread.flag = false;//停止...
第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。 import android.content.BroadcastReceiver; import android.content.Context;...
2.1.2 创建第一个Android活动 22 2.1.3 Android应用程序的类型 27 2.2 面向移动设备的开发 28 2.2.1 关于硬件设计的考虑事项 28 2.2.2 考虑用户环境 31 2.2.3 Android开发 32 2.3 To-Do List示例 35 2.4 ...
10.1.2 启动和停止Service 376 10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 ...
服务的有两种启动方式,对应两个生命周期 startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和...
Android服务 在Android中创建后台服务要创建后台服务,首先需要将服务添加到清单文件中。 然后,创建一个扩展服务的类。 最后,在您的活动中启动... 创建一个扩展Service类的新类MyService。 要启动服务并停止服务:
应用组件(例如Activity)调用startService()来启动一个Service,将需要的参数通过Intent传给Service,Service将会在onStartCommand函数中获得Intent。 有两种方式可以创建started service,一种是扩展Service类,...
从互联网上提取数据,当然,在手机的通知栏中创建一个通知###AlarmService.java 它扩展了服务类,它包含每次触发警报时要执行的操作。 警报触发的时间间隔在TimeService.java srcipt 中设置。 ###TimeService.java ...
Android实例源码-应用启动应用退出&网络判断类安卓源代码(12例) 3G和wifi的切换监听 android 在线更新示例代码 android程序的自动更新 和 基于GPS定位的轨迹存储 app更新,实现service下载 ViewPager+Fragment侧滑...
详细介绍了Service的创建、使用、以及与Activity之间的通讯.
嵌入式Android项目设计与开发 第八章 服务 —— 服务的概念 服务的概念 服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。 服务...
由于Android设计时已经把中间层标准化了,我们实现一个服务时,只需要简单实现服务端(Native)和调用端(Proxy)即可。本文将详细描述ActiveService的启动全过程,有关Binder的部分没有详细介绍,后续文章再介绍。...
Android 应用案例——备忘录,通过一个Android基础应用项目综合应用了Android中的各种组件,包括Activity、Service、Broadcast Receiver、ContentProvider、Intent和View的应用 第18章 Android应用案例——无线点餐...
Accessibility Insights for Android Service 是一项适用于 Android 的服务,可帮助评估 Android 应用程序的可访问性。 构建代码 先决条件 下载并安装 如果您打算使用 Android Studio 的模拟器,请确保在下载设置...