Android服务Service 详解

Android服务Service 详解
Android服务Service 详解

Android系统精简列表对照表

安卓系统精简列表对照表,适用于大部分Android系统,大家请参考对照精简。AirkanPhoneService 可删 AntiSpam 可删 AdupsFot.apk无线升级(可删) AdupsFotaReboot.apk重启升级操作(可删) ApplicationGuide.apk-应用程度指南(不可删)ApplicationsProvider.apk-应用程序存储服务(不可删) AtciService.apk--系统服务(不可删) Backup.apk 可删 BackupRestoreConfirmation.apkGoogle邮箱的备份,可删BasicDreams.apk 4.2新增,休眠模式,不可删 BatteryWarning.apk--电池警告(建议保留) Browser.apk-谷歌浏览器(可删) BugReport 可删 Calculator.apk---计算器(可删) Calendar.apk日历(可删,换第三方日历) CalendarImporter.apk日历服务(同上) CalendarProvider.apk-日历存储(同上) CDS_INFO.apk--常见数据服务(不可删) CellBroadcastReceiver.apk小区广播(可删) CellConnService.apk---电话连接服务(不可删) CertInstaller.apk-证书安装,可删(亲测,没发现问题)

Cit可删 CloudService可删 ChromeBookmarksSyncAdapter.apk-Google书签同步(可删) com.google.android.apps.docs.apk--云端硬盘(可删) com.google.android.apps.maps.apk-谷歌地图(可删) com.google.android.googlequicksearchbox.apk-Google搜索(可删) com.google.android.street.apk--街景视图(可删) Contacts.apk--通讯录/联系人(不可删) ContactsProvider.apk--通讯录/联系人数据存储服务(不可删)DataHubProvider.apk. 会导致流量红圈不可删 DataTransfer.apk-备份与恢复(可删) DataUsageLockScreenClient.apk数据应用和锁定屏幕客户端(不可删)DefaultContainerService.apk-默认存储服务(不可删) DeskClock.apk闹钟,时钟(建议保留) DownloadProvider.apk 下载管理器,可删(删了就不能在谷歌电子市场和谷歌浏览器下载东西了,需要的留着) DownloadProviderUi.apk 下载内容,可删(同上) DrmProvider.apk 受DRM保护的内容的存储,可删(有DRM保护的东西就留着这个)Email.apk-电子邮件(可删) EngineerMode.apk--工程模式(不可删) EngineerModeSim.apksim卡工程模式(不可删) EventReceiver 翻译过来就是事件接收还是别删了这个网上没查到多少资料

Android的系统服务一览

Android的系统服务一览 System_Server进程 运行在system server进程中的服务比较多,这是整个android框架的基础 Native服务 SurfaceFlinger 这是framebuffer合成的服务,将各个应用程序及应用程序中的逻辑窗口图像数据(surface)合成到一个物理窗口中显示(framebuffer)的服务程序 Java服务: 这部分的服务大部分都有一个供应用进程使用的manager类,这就是一个RPC 调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到system_server 进程中对应的xxxManagerService中对应的方法,并将结果再通过binder带回。 1. EntropyService 熵服务,周期性的加载和保存随机信息。主要是linux开机后,/dev/random的状态可能是可预知的,这样一些需要随机信息的应用程序就可能会有问题。这个无需提供应用程序接口。 2. PowerManagerService –> PowerManager Android 的电源管理也是很重要的一部分。比如在待机的时候关掉不用的设备,待机时屏幕和键盘背光的关闭,用户操作的时候该打开多少设备等等。 3. ActivityManagerService->ActivityManager 这个是整个Android framework框架中最为核心的一个服务,管理整个框架中任务、进程管理, Intent解析等的核心实现。虽然名为Activity的Manager

Service,但它管辖的范围,不只是Activity,还有其他三大组件,和它们所在的进程。也就是说用户应用程序的生命管理,都是由他负责的。 4. TelephonyRegistry->TelephonyManager 电话注册、管理服务模块,可以获取电话的链接状态、信号强度等等。<可以删掉,但要看的大概明白> 5. PackageManagerService -> PackageManager 包括对软件包的解包,验证,安装以及升级等等,对于我们现在不能安装.so文件的问题,应该先从这块着手分析原因。 6. AccountManagerService -> AccountManager A system service that provides account, password, and authtoken management for all accounts on the device。 7. ContentService -> ContentResolver 内容服务,主要是数据库等提供解决方法的服务。 8. BatteryService 监控电池充电及状态的服务,当状态改变时,会广播Intent 9. HardwareService 一般是ring和vibrate的服务程序 10. SensorService -> SensorManager 管理Sensor设备的服务,负责注册client设备及当client需要使用sensor时激活Sensor 11. WindowManagerService -> WindowManager -> PhoneWindowManager 和ActivityManagerService高度粘合 窗口管理,这里最核心的就是输入事件的分发和管理。 12. AlarmManagerService -> AlarmManager 闹钟服务程序

最新Android应用程序绑定服务bindService的过程源代码分析汇总

A n d r o i d应用程序绑定服务b i n d S e r v i c e 的过程源代码分析

Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动;前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部绑定Service的过程,这是一种在应用程序进程内部启动Service的方法。 在前面一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划中,我们就曾经提到,在Android系统中,每一个应用程序都是由一些Activity和Service组成的,一般Service运行在独立的进程中,而Activity有可能运行在同一个进程中,也有可能运行在不同的进程中;在接下来的文章中,Android系统在新进程中启动自定义服务过程(startService)的原理分析一文介绍了在新的进程中启动Service的过程,Android应用程序启动过程源代码分析一文介绍了在新的进程中启动Activity的过程,而Android应用程序内部启动Activity过程(startActivity)的源代码分析一文则介绍了在应用程序进程内部启动Activity的过程;本文接过最后一棒,继续介绍在应用程序进程内部启动Service的过程,这种过程又可以称在应用程序进程内部绑定服务(bindService)的过程,这样,读者应该就可以对Android应用程序启动Activity和Service有一个充分的认识了。 这里仍然是按照老规矩,通过具体的例子来分析Android应用程序绑定Service的过程,而所使用的例子便是前面我们在介绍Android系统广播机制的一篇文章Android系统中的广播(Broadcast)机制简要介绍和学习计划中所开发的应用程序Broadcast了。 我们先简单回顾一下这个应用程序实例绑定Service的过程。在这个应用程序的MainActivity的onCreate函数中,会调用bindService来绑定一个计数器服务CounterService,这里绑定的意思其实就是在MainActivity内部获得CounterService的接口,所以,这个过程的第一步就是要把CounterService 启动起来。当CounterService的onCreate函数被调用起来了,就说明CounterService已经启动起来了,接下来系统还要调用CounterService的onBind函数,跟CounterService要一个Binder对象,这个Binder对象是在CounterService内部自定义的CounterBinder类的一个实例,它继承于Binder类,里面实现一个getService函数,用来返回外部的CounterService接口。系统得到这个Binder对象之后,就会调用MainActivity在bindService函数里面传过来的ServiceConnection实例的onServiceConnected函数,并把这个Binder对象以参数的形式传到onServiceConnected函数里面,于是,MainActivity就可以调用这个Binder对象的getService函数来获得CounterService的接口了。 这个过程比较复杂,但总体来说,思路还是比较清晰的,整个调用过程为MainActivity.bindService->CounterService.onCreate->CounterService.onBind- >MainActivity.ServiceConnection.onServiceConnection->CounterService.CounterBinder.getService。下面,我们就先用一个序列图来总体描述这个服务绑定的过程,然后就具体分析每一个步骤。

能够删除的安卓(Android)系统自带程序详细列表

能够删除的安卓(Android)系统自带程序详细列表 注:删除前请先备份 有机友因为删除了系统自带的一些程序,使得手机出现很大的问题,只有重新刷机才可以解决。这份表单,供各位在删除程序的时候做个参考。Android手机系统中默认会自带很多无用程序,这些应用,平时很少用不到,但因为是系统自带的,所以它们像牛皮癣一样内嵌在手机里,无法去除。下面列举一些能够删除和不能够删除的软件列表,希望对G友有用!怎么删除呢?当然是下载一个Root Explorer来删除(需要完全ROOT) 注意: 1. 有*号是绝不可删的,否则会出现严重问题; 2. 删除系统自带程序前,请注意备份; 3. 因不同版本的Android系统和不同品牌手机的定制,会有差异导致系统自带程序列表有差异,但大体上一致,请大家自己斟酌。 自带的软件列表: *AccountAndSyncSettings.apk 同步与帐户设定(绝不能删除) *ApplicationsProvider.apk 应用程序支持服务(绝不能删除)Bluetooth.apk 蓝牙(删除后蓝牙功能消失)Browser.apk 系统自带浏览器(可用其他手机浏览器替代) Calculator.apk 计算器(可删,可用其他替代)Calendar.apk 日历(可删) CalendarProvider.apk 日历程序支持服务(可删) *Camera.apk 自带相机(绝不能删除) *CertInstaller.apk 证书服务(绝不能删除) Contacts.apk 通讯录/联系人(用第三方通讯录的可删)*ContactsProvider.apk 通讯录/联系人数据存储服务(绝不能删除)*DefaultContainerService.apk 默认通讯录服务(绝不能删除) DeskClock.apk 自带闹钟(用第三方闹钟的可删) *DownloadProvider.apk 下载管理器(绝不能删除) *DrmProvider.apk DRM受保护数据存储服务(绝不能删除)DSPManager.apk DSP音频管理(可删) Email.apk Email(不用自带Email接受邮件的可删)FileManager.apk 简易文件管理器(可删,可用ES文件管理器替代) Gallery3D.apk 3D图片浏览器(可删) GenieWidget.apk 天气与新闻(可删) Gmail.apk Gmail(可删)GoogleBackupTransport.apk ***(未知程序,可删)GoogleCalendarSyncAdapter.apk 存储日历信息(可删)GoogleContactsSyncAdapter.apk 存储联系人信息(可删) GoogleFeedback.apk ***(据说删除后开机会提示GoogleFeedback.apk,根据自身情况决定是否删除) GooglePartnerSetup.apk Google助手(可删)

6.1 系统服务概述

6.1系统服务概述

第1节 Android服务概述第2节系统服务 第3节自定义服务 第4节多线程

?理解Android服务的作用。 ?理解Android服务的运用场合。 ?理解访问Android系统服务的方法。 ?能熟练访问各种多媒体服务 ◆定时服务:Alarm Service ◆壁纸服务:Wallpaper Service ◆媒体服务:Audio Service ?能熟练访问各种系统服务 ◆通知服务:Notification Service ◆窗口服务:Window Service ◆活动服务:Activity Service ◆电话服务:Telephony Service ◆网络服务:Connectivity Service

6.1 系统服务概述 知识点预览 # 知识点重点难点应用说明 1 Windows服务理解Windows操作系统中服务的作用。 2 Android服务√理解Android系统中服务的作用。 3 Android服务分类√√理解Android系统中服务的各种分类。 4 Android系统服务创建过程√理解Android系统服务存在的意义和地位。 5 Android系统服务应用场景√√理解Android系统服务的应用场景和作用。

1 Android 服务概述 ? 1 什么是Windows服务? ◆服务与运行在Windows操作系统中应用程序一样都是的一个进程。 ◆服务是一个特殊的进程,特点在于没有图形用户界面(GUI)。 ◆服务在操作系统的后台(Background)为用户默默提供各种业务技能和系统 状态的监控业务。

Android实现获取系统应用列表

Android实现获取系统应用列表 本文介绍在Android中如何获取系统应用程序列表。 Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理) 等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理应用程序包。通过它,我们就可以获取应用程序信息。 PackageManager的功能: ?安装,卸载应用 ?查询permission相关信息 ?查询Application相关信息(application,activity,receiver,service,provider及相应属性等)?查询已安装应用 ?增加,删除permission ?清除用户数据、缓存,代码段等 我们可以用PackageManager来显示系统安装的应用程序列表或者系统程序列表 相关类的介绍 PackageItemInfo类 说明:AndroidManifest.xml文件中所有节点的基类,提供了这些节点的基本信息:a label、icon、meta-data。它并不直接使用,而是由子类继承然后调用相应方法。 常用字段: public int icon 获得该资源图片在R文件中的值(对应于android:icon属性) public int labelRes 获得该label在R文件中的值(对应于android:label属性) public String name 获得该节点的name值(对应于android:name属性) public String packagename 获得该应用程序的包名(对应于android:packagename属性) 常用方法: Drawable loadIcon(PackageManager pm) 获得当前应用程序的图像 CharSequence loadLabel(PackageManager pm) 获得当前应用程序的label

Android服务Service 详解

第8章 Android服务 ? 8.1 Service起步? 8.1.1 Service的生命周期 ? 8.1.2 绑定Activity和Service ? 8.1.3 在BroadcastReceiver中启动Ser.. ? 8.2.1 获得系统服务? 8.2.2 在模拟器上模拟重力感应 ? 8.3.1 计时器:Chronometer ? 8.3.2 预约时间Handler ? 8.3.4 在线程中更新GUI组件? 8.3.5 全局定时器AlarmManager(1) ? 8.3.5 全局定时器AlarmManager(2)? 8.3.5 全局定时器AlarmManager(3) ? 8.4.1 什么是AIDL服务? 8.4.2 建立AIDL服务的步骤(1) ? 8.4.2 建立AIDL服务的步骤(2)? 8.4.2 建立AIDL服务的步骤(3) ? 8.5 本章小结 第8章Android服务 服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样可以不影响用户做其他事情。通过AIDL服务可以实现不同进程之间的通信,这也是服务的重要用途之一。 本章内容 Service的生命周期 绑定Activity和Service 在BroadcastReceiver中启动Service 系统服务 时间服务 在线程中更新GUI组件 AIDL服务 在AIDL服务中传递复杂的数据 8.1 Service起步 Service并没有实际界面,而是一直在Android系统的后台运行。一般使用Service为应用程序提供一些服务,或不需要界面的功能,例如,从Internet下载文件、控制Video播放器等。本节主要介绍Service的启动和结束过程(Service的生命周期)以及启动Service的各种方法。 8.1.1 Service的生命周期 本节的例子代码所在的工程目录是src\ch08\ch08_servicelifecycle Service与Activity一样,也有一个从启动到销毁的过程,但Service的这个过程比Activity简单得多。Service启动到销毁的过程只会经历如下3个阶段: 创建服务 开始服务 销毁服务

Android系统完整的启动过程

Android系统完整的启动过程,从系统层次角度可分为Linux系统层、Android系统服务层、Zygote进程模型三个阶段;从开机到启动Home Launcher完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读Android系统完整的初始化过程。 一、启动BootLoader Android 系统是基于Linux操作系统的,所以它最初的启动过程和Linux一样。当设备通电后首先执行BootLoader引导装载器,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境引导进入合适的状态,以便为最终调用操作系统内核准备好正确的运行环境。 而Linux系统启动时: 1)首先要加载BIOS的硬件信息,并获取第一个启动设备的代号 2)读取第一个启动设备的MBR的引导加载程序(lilo、grub等)的启动信息。 3)加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有的硬件设备。 ………… 在嵌入式系统中,通常不会有像BIOS那样的固件程序,因此整个系统的加载任务都是通过BootLoader完成的。 二、加载系统内核 Linux内核映像通常包括两部分代码,分别为实模式代码和保护模式代码。当BootLoader装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行完成后转入保护模式代码。 实模式和保护模式的概念再次不做过多解释,读者可以自行查阅资料。 三、启动Init进程 当系统内核加载完成之后,会首先启动Init守护进程,它是内核启动的第一个用户级进程,它的进程号总是1。Init进程启动完成之后,还负责启动其他的一些重要守护进程,包括: Usbd进程(USB Daemon):USB连接后台进程,负责管理USB连接。 adbd 进程(Android Debug Bridge Daemon):ADB连接后台进程,负责管理ADB连接。 debuggerd 进程(Debugger Daemon) :调试器后台进程,负责管理调试请求及调试过程。 rild进程(Radio Interface Layer Daemon):无线接口层后台进程,负责管理无线通信服务。 四、启动Zygote进程 Init进程和一些重要的守护进程启动完成之后,系统启动Zygote 进程。Zygote 进程启动后,首先初始化一个Dalvik VM实例,然后为它加载资源与系统共享库,并开启Socket监听服务,当收到创建Dalvik VM实例请求时,会通过COW(copy on write)技术最大程度地复用自己,生成一个新的Dalvik VM实例。Dalvik VM实例的创建方法基于linux系统的fork原理。

Android 4.0.3系统软件精简列表

Android 4.0自带软件精简列表!! 相信很多机友都需要吧,删除一些没用的软件,节省出一定的内存空间,可以使系统更加流畅。 AccountAndSyncSettings.apk 搜索应用提供商(不建议删,如果不用同步则可删. 不用谷歌的同步功能就可以删除 BackupRestoreConfirmation.apk (不能删) Bluetooth.apk 蓝牙 (不能删,你懂的) BooksTablet.apk 谷歌读书软件(可删,没用的看书软件,可用GGbook或者其他代替,没啥用,我删了) Browser Google.apk 自带浏览器(可删,没啥用,我删了,反正我用UC浏览器) Calculator.apk 计算器(可删,鸡肋的计算器,可用其他多功能计算器代替,没啥用,我删了) CalendarGoogle.apk 日历(可删,鸡肋的日历,我删了,加个中华万年历)CalendarProvider.apk 日历储存(可删,上面删了这个也要删) CameraGoogle.apk 相机(不能删,系统自带的好过其他软件,我已经对比过很多照相软件都没自带的好.原生的强大啊!)QQ178505928 CarHomeGoogle.apk 车载模式(可删,没啥用,我删了) CertInstaller.apk 证书(不能删) ChromeBookmarksSyncAdapter.apk 书签同步(可删,没啥用,我删了) ContactsProvider.apk 联系人储存(不建议删,如果用QQ通讯录可直接删掉) Contacts.apk 通讯录(不建议删,自带通讯录) DefaultContainerService.apk 软件包访问(不能删,删了不能安装软件了) DeskClockGoogle.apk 时钟(可删,可用整点闹钟代替,没啥用,我删了) DownloadProviderUi.apk.下载提供UI(可删,没啥用,我删了) DownloadProvider.apk..下载提供(可删,那个下载内容,没啥用,我删了)DrmProvider.apk......DRM 受保护数据存储服务(不能删) EmailGoogle.apk 电子邮件(可删,没用手机看邮件的可删,可用其他代替) ExchangeGoogle.apk 电子邮件服务(可删,上面删了,这也删) GalleryGoogle.apk 图库(不建议删,自带的也挺好.) GenieWidget.apk新闻与天气(可删,没用的东西)

Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务

Android四大组件——Service后台服务、前台服务、IntentService、跨进程服务、无障碍服务、系统服务 Service简介 Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作 Service的运行不依赖于任何用户界面,即使程序被切换到后台或者用户打开另一个应用程序,Service仍然能够保持正常运行,这也正是Service的使用场景。当某个应用程序进程被杀掉时,所有依赖于该进程的Service也会停止运行 后台服务 后台服务可交互性主要是体现在不同的启动服务方式,startService()和bindService()。bindService()可以返回一个代理对象,可调用Service中的方法和获取返回结果等操作,而startService()不行 不可交互的后台服务 不可交互的后台服务即是普通的Service,Service的生命周期很简单,分别为onCreate、onStartCommand、onDestroy这三个。当我们startService()的时候,首次创建Service会回调onCreate()方法,然后回调onStartCommand()方法,再次startService()的时候,就只会执行一次onStartCommand()。服务一旦开启后,我们就需要通过stopService()方法或者stopSelf()方法,就能把服务关闭,这时就会回调onDestroy() 一、创建服务类 创建一个服务非常简单,只要继承Service,并实现onBind()方法 public class BackGroupService extends Service { /** * 綁定服务时调用 * * @param intent * @return */ @Nullable

android安卓系统自带软件列表(想精简系统软件的看

defy系统自带软件列表(想精简系统软件的看) 带*标志是不可删除(删除了只有刷机了) *AccountAndSyncSettings.apk 同步与帐户设定 *ApplicationsProvider.apk 应用程序支持服务 Bluetooth.apk 蓝牙(删了就没有蓝牙了) Browser.apk 谷歌浏览器(喜欢UC的可用UC替代) Calculator.apk 计算器(自带计算器较弱,可用其他替代)Calendar.apk 日历(不用日历的可删) CalendarProvider.apk 日历程序支持服务(不用日历的可删) *Camera.apk 自带相机(用360的可删) *CertInstaller.apk 证书服务 Contacts.apk 通讯录/联系人(用第三方通讯录的可删) *ContactsProvider.apk 通讯录/联系人数据存储服务 *DefaultContainerService.apk 默认通讯录服务 DeskClock.apk 自带闹钟(用第三方闹钟的可删) *DownloadProvider.apk 下载管理器 *DrmProvider.apk DRM受保护数据存储服务 DSPManager.apk DSP音频管理(可删) Email.apk Email(不用自带email接受邮件的可删)FileManager.apk 简易文件管理器(用ES替代了,这个不用,删之)Gallery3D.apk 3D浏览器(嫌弃它速度慢的,可删)GenieWidget.apk 天气与新闻(看新闻的,不要的话可删) Gmail.apk Gmail(可删,不用GMAIL的就删了吧)

Android系统在新进程中启动自定义服务过程(startService)的原理分析

Android系统在新进程中启动自定义服务过程(startService)的原理分析 在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验。Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startService函数来启动这个服务。在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的。 在主进程调用startService函数时,会通过Binder进程间通信机制来通知ActivitManagerService来创建新进程,并且启动指定的服务。在Android系统中,Binder进程间通信机制使用非常广泛,因此,希望读者在继续阅读下面的内容之前,对Android系统和Binder 进程间通信机制有一定的了解,具体可以参考前面Android进程间通信(IPC)机制Binder简要介绍和学习计划一文。 关于startService的具体用法,可以参考前面Android系统匿名共享内存Ashmem (Anonymous Shared Memory)简要介绍和学习计划一文中用到的实例,它是Activity类的一个成员函数: view plain 1package shy.luo.ashmem; 2 3...... 4 5public class Client extends Activity implements OnClickListener { 6 ...... 7 IMemoryService memoryService = null; 8 ...... 9 10 @Override 11public void onCreate(Bundle savedInstanceState) { 12 ...... 13 14 IMemoryService ms = getMemoryService(); 15if(ms == null) { 16 startService(new Intent("shy.luo.ashmem.server")); 17 } else { 18 Log.i(LOG_TAG, "Memory Service has started."); 19 } 20 21 ...... 22 23 Log.i(LOG_TAG, "Client Activity Created."); 24 }

Android的前台服务

Android的前台服务 Service几乎都是在后台运行的,一直以来它都是默默地做着辛苦的工作。但是Service的系统优先级还是比较低的,当系统出现内存不足情况时,就有可能会回收掉正在后台运行的Service。如果你希望Service可以一直保持运行状态,而不会由于系统内存不足的原因导致被回收,就可以考虑使用前台Service。 前台Service和普通Service最大的区别就在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于通知的效果。当然有时候你也可能不仅仅是为了防止Service被回收才使用前台Service,有些项目由于特殊的需求会要求必须使用前台Service,比如说墨迹天气,它的Service在后台更新天气数据的同时,还会在系统状态栏一直显示当前天气的信息,如下图所示:

那么我们就来看一下如何才能创建一个前台Service吧,其实并不复杂,如下所示: 这里只是修改了Service中onCreate()方法的代码。可以看到,我们首先创建了一个Notification对象,然后调用了它的setLatestEventInfo()方法来为通知初始化布局和数据,并在这里设置了点击通知后就打开MainActivity。然后调用startForeground()方法就可以让MyService变成一个前台Service,并会将通知的图片显示出来。喜欢Android的朋友可以来南京宝云官网交流噢! 现在重新运行一下程序,Service就会以前台Service的模式启动了,并且在系统状态栏会弹出一个通栏图标,下拉状态栏后可以看到通知的详细内容,如下图所示:

相关文档
最新文档