`
bcyy
  • 浏览: 1831756 次
文章分类
社区版块
存档分类
最新评论

Android Service---创建一个被启动类型的服务

 
阅读更多
一个启动类型的服务是另一个组件通过调用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的创建

    QT for Android下多个 Service的创建启动,包括Service通过Jni外调QT信号槽实现,对研究QT在安卓下的跨平台开发很有帮助

    Android中实现开机自动启动服务(service)实例

    还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...

    Android Service无图标/界面独立运行

    1、startService开启服务以后,与activity就没有关联,不受影响,独立运行,需要stopService关闭,否则Activity移除栈后将一直运行(kill杀不死). 2、bindService开启服务以后,与activity存在关联,退出activity时...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android 自动启动服务的示例.rar

    Android 自动启动服务,也可以手动启动或停止指定的服务,这只是一个例子,演示在android环境下,如何在后台自动运行Service。  public void onDestroy() {//重写的onDestroy方法   myThread.flag = false;//停止...

    Android实现开机自动启动Service或app的方法

    第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。 import android.content.BroadcastReceiver; import android.content.Context;...

    Android高级编程--源代码

    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 ...

    疯狂Android讲义第10章源码(Android服务Service_详解)

     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 ...

    Android中service基本用法,生命周期2

    服务的有两种启动方式,对应两个生命周期 startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和...

    AndroidService:在Android中创建后台服务

    Android服务 在Android中创建后台服务要创建后台服务,首先需要将服务添加到清单文件中。 然后,创建一个扩展服务的类。 最后,在您的活动中启动... 创建一个扩展Service类的新类MyService。 要启动服务并停止服务:

    Android创建服务之started service详细介绍

     应用组件(例如Activity)调用startService()来启动一个Service,将需要的参数通过Intent传给Service,Service将会在onStartCommand函数中获得Intent。 有两种方式可以创建started service,一种是扩展Service类,...

    android-alarm-time-service-guide

    从互联网上提取数据,当然,在手机的通知栏中创建一个通知###AlarmService.java 它扩展了服务类,它包含每次触发警报时要执行的操作。 警报触发的时间间隔在TimeService.java srcipt 中设置。 ###TimeService.java ...

    Android实例源码-应用启动应用退出&网络判断类安卓源代码(12例).zip

    Android实例源码-应用启动应用退出&网络判断类安卓源代码(12例) 3G和wifi的切换监听 android 在线更新示例代码 android程序的自动更新 和 基于GPS定位的轨迹存储 app更新,实现service下载 ViewPager+Fragment侧滑...

    Android Service详解

    详细介绍了Service的创建、使用、以及与Activity之间的通讯.

    Android项目设计与开发:服务的概念.ppt

    嵌入式Android项目设计与开发 第八章 服务 —— 服务的概念 服务的概念 服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。 服务...

    Android进阶-Activity服务启动分析

    由于Android设计时已经把中间层标准化了,我们实现一个服务时,只需要简单实现服务端(Native)和调用端(Proxy)即可。本文将详细描述ActiveService的启动全过程,有关Binder的部分没有详细介绍,后续文章再介绍。...

    Android应用开发详解

    Android 应用案例——备忘录,通过一个Android基础应用项目综合应用了Android中的各种组件,包括Activity、Service、Broadcast Receiver、ContentProvider、Intent和View的应用 第18章 Android应用案例——无线点餐...

    accessibility-insights-for-android-service:Android 服务的无障碍洞察

    Accessibility Insights for Android Service 是一项适用于 Android 的服务,可帮助评估 Android 应用程序的可访问性。 构建代码 先决条件 下载并安装 如果您打算使用 Android Studio 的模拟器,请确保在下载设置...

Global site tag (gtag.js) - Google Analytics