更新时间:2025 09 18 14:50:29 作者 :庆美网 围观 : 34次
大家好,今天来为大家解答android service、android service下载这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
PowerManagerService提供Android系统的电源管理服务,主要功能是控制系统待机状态,屏幕显示,亮度调节,光线/距离传感器的控制等。
相关代码在以下文件中:
初始化流程
跟其他系统服务一样,PowerManagerService也是继承于SystemService并通过SystemServer启动。
SystemServer
frameworks/base/services/java/com/android/server/SystemServer.java
PowerManagerService
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
在SystemServer的startBootstrapServices中,通过SystemServiceManager.startService启动了PowerManagerService,下面首先来看PowerManagerService构造方法。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
PowerManagerService构造函数中首先创建了处理消息的进程及对应的handler对象以进行消息处理,然后创建SuspendBlocker对象,用于WakeLocks与Display,并设置mWakefulness的初始状态为WAKEFULNESS_AWAKE,最后进入到native层初始化。下面先看一下关于mWakefulness的定义。
继续回到PowerManagerService构造函数的native初始化中,首先来看nativeInit的实现。
frameworks/base/services/core/jni/com_android_server_power_PowerManagerService.cpp
nativeInit的主要任务时装载power模块,该模块由厂商实现,以高通为例,如下。
device/qcom/common/power/power.c
power_module中实现了init,powerHint,setInteractive,nativeInit最终调用到HAL power模块的power_init具体实现中。接着看native初始化nativeSetAutoSuspend的实现。
frameworks/base/services/core/jni/com_android_server_power_PowerManagerService.cpp
system/core/libsuspend/autosuspend.c
nativeSetAutoSuspend最终调用到libsuspend(参考Android电源管理系列之libsuspend)的autosuspend_disable禁止系统休眠。继续看native初始化nativeSetInteractive,nativeSetFeature的实现
frameworks/base/services/core/jni/com_android_server_power_PowerManagerService.cpp
同nativeInit一样,最终都是调用到HAL power模块的具体实现中。以上是构造函数的分析流程,下面继续看PowerManagerService在系统启动过程中回调onStart(),onBootPhase(),systemReady()的实现。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
public void onStart() {
publishBinderService(Context.POWER_SERVICE, new BinderService());
publishLocalService(PowerManagerInternal.class, new LocalService());
Watchdog.getInstance().addMonitor(this);
Watchdog.getInstance().addThread(mHandler);
}
private final class BinderService extends IPowerManager.Stub {
……
}
private final class LocalService extends PowerManagerInternal {
……
}
onStart()中发布了BinderService,LocalService分别供其他进程,进程内其他服务调用,并将PowerManagerService加入到Watchdog监控中。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
onBootPhase中主要设置mBootCompleted状态,更新PowerState状态,并执行mBootCompletedRunnables中的runnables方法(低电量模式会设置)。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
userActivity
userActivity是定义在PowerManager中的SystemApi,用户向PowerManagerService报告用户活动,以更新PowerManagerService内部时间/状态值,推迟系统休眠的时间。下面首先来看userActivity的定义。
frameworks/base/core/java/android/os/PowerManager.java
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
PowerManager中userActivity请求调用服务端PowerManagerService BinderService的userActivity,即调用内部方法userActivityInternal。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
userActivityInternal中首先调用userActivityNoUpdateLocked更新相关数据及状态(***NoUpdateLocked仅仅更新内部状态并不采取任何操作),然后调用updatePowerStateLocked更新所有PowerState,下面分析userActivityNoUpdateLocked的实现,updatePowerStateLocked是PowerManagerService的核心方法,在最后进行分析。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
gotoSleep
gotoSleep在PowerManager中的定义如下:
frameworks/base/core/java/android/os/PowerManager.java
与userActivity一样,gotoSleep最终将调用到goToSleepInternal。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
goToSleepInternal中将执行goToSleepNoUpdateLocked更新内部状态,同样在updatePowerStateLocked中更新PowerState的操作。
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
goToSleepNoUpdateLocked中更新mLastSleepTime,mWakefulness,mDirty状态。
Service 是四大组件之一,后台运行的解决方案,适合那些不需要和用户交互还要长期运行的任务。Service 的运行不依赖于任何用户界面,即使 app 被切到后台,Service 仍能够正常运行。当某个程序进程被杀掉时,所有依赖于该进程的 Service 也会停止
使用时必须在清单文件中声明服务如:
Service 与 Thread 的区别
生命周期
启动方式
停止 Service
IntentService
Service 的子类,它使用工作线程逐一处理所有启动请求。如果您不要求服务同时处理多个请求,这是最好的选择。您只需实现 onHandleIntent() 方法即可,该方法会接收每个启动请求的 Intent,使您能够执行后台工作。
IntentService 特性:
onStartCommand
onStartCommand() 方法必须返回整型数。整型数是一个值,用于描述系统应该如何在服务终止的情况下继续运行服务(如上所述,IntentService 的默认实现将为您处理这种情况,不过您可以对其进行修改)。从 onStartCommand() 返回的值必须是以下常量之一:
bindService & unbindService
绑定服务允许应用组件通过调用 bindService() 与其绑定,以便创建长期连接.
如需与 Activity 和其他应用组件中的服务进行交互,或者需要通过进程间通信 (IPC) 向其他应用公开某些应用功能,则应创建绑定服务。
要创建绑定服务,必须实现 onBind() 回调方法以返回 IBinder,用于定义与服务通信的接口。然后,其他应用组件可以调用 bindService() 来检索该接口,并开始对服务调用方法。服务只用于与其绑定的应用组件,因此如果没有组件绑定到服务,则系统会销毁服务(您不必按通过 onStartCommand() 启动的服务那样来停止绑定服务)。
要创建绑定服务,首先必须定义指定客户端如何与服务通信的接口。服务与客户端之间的这个接口必须是 IBinder 的实现,并且服务必须从 onBind() 回调方法返回它。一旦客户端通过 ServiceConnection.onServiceConnected()收到 IBinder,即可开始通过该接口与服务进行交互。
实现绑定服务时,最重要的环节是定义您的 onBind() 回调方法返回的 IBinder,用以提供客户端用来与服务进行交互的编程接口。您可以通过三种方法定义接口:
示例:客户端可以调用 getServices 方法,获取 Service 的引用与其交互
当客户端被销毁时,它将取消与服务的绑定,但您应该始终在完成与服务的交互时或您的 Activity 暂停时取消绑定,以便服务能够在未被占用时关闭。
管理 bindService 的生命周期
同时使用 bindService 和 startService
前台 Service
由于后台服务优先级相对比较低,当系统出现内存不足的情况下 前台服务被认为是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,这意味着除非服务停止或从前台删除,否则不能清除通知。如:
要请求让服务运行于前台,请调用 startForeground()。此方法取两个参数:唯一标识通知的整型数和状态栏的 Notification。例如:
要从前台删除服务,请调用 stopForeground()。此方法取一个布尔值,指示是否也删除状态栏通知。此方法绝对不会停止服务。但是,如果您在服务正在前台运行时将其停止,则通知也会被删除。
总结
关于android service、android service下载,的介绍到此结束,希望对大家有所帮助。
MotoXT316使用2.8英寸的QVGA电容触摸屏。该屏幕支持两点触摸,并具有相对敏感的触摸响应。尽管其分辨率是QVGA,但颜色繁殖和亮度还不错。与某些具有相
西门子PLC的优点有:1.西门子PLC可靠性高,抗干扰能力强,西门子plc高可靠性是电气控制设备的关键性能。西门子PLC由于采用现代大规模集成电路技术,采用严格
使用相机21mm广角端可以拍摄广阔的全景焦距:4mm光圈:f/8.0ISO感光度:100使用相机1365mm长焦端可以记录远处的特写焦距:49mm光圈:f/5.
以太网控制器早在1970年代就出现了。它们是Xerox发明的重要组成部分,以确保计算机网络性能。他们使用LAN基带连接标准。同时,在工作时,以太网控制器还将使用
1五类IP IPV4简单粗暴地把IP地址分为五类。分类方法如下图所示:也就是说,分为以下几类:A:0.0.0.0127.255.255,其中段0和127不可用
1。通过搜索功能添加最直接的方法是通过微博上的搜索功能。用户可以在Weibo应用程序的“Discover”页面的搜索框中输入朋友的微博昵称,真实名称或相关关键字
用户评论
终于找到关于Android Service的文章了!我一直想学习如何利用Service来实现后台任务,现在看来这篇文章讲解得非常清晰,很容易理解!
有19位网友表示赞同!
之前一直没遇到过Service这类东西,看了这篇帖子终于懂一点儿了,感觉学习下应该还是挺有用的。就是下载链接在哪里啊? 希望能分享一下具体的资源。
有17位网友表示赞同!
想做点后台功能应用,但每次都看各种文档还搞不明白Android Service怎么用,这篇文章太宝贵了!特别是讲解的例子很清晰,我现在好像开始Get到它是怎么运作的...
有6位网友表示赞同!
下载地址还是失效啊, 你有其他下载链接吗?感觉这个 Android Service 资源很棒,想早点试一试!
有13位网友表示赞同!
Android Service的东西学起来挺难的,很多东西都需要深入理解系统架构才能掌握。不过这篇文章讲得挺全面的,起码让我对Service有了基本概念。希望以后写一些更高级的内容解析。
有12位网友表示赞同!
我本来想做个音乐播放器,后台循环播放功能必须依赖Service啊!这篇帖子的讲解非常棒,直接点出了关键知识点,下载资源也很方便,太赞了!
有15位网友表示赞同!
看了很多Android Tutorial 都没找到什么可靠的Service学习资料,幸好看到了这篇文章!文章讲解清晰易懂,还有实际案例分析,对我提升理解很有帮助。
有16位网友表示赞同!
这个下载链接是失效的,建议更换或发布到新的网站平台, 方便大家下载资源!
有5位网友表示赞同!
Android Service真不是一般的复杂,感觉这篇帖子过于简化,对初学者未必有太多帮助...
有17位网友表示赞同!
我对 Android 的开发越来越感兴趣了,希望能学着做点实用的 app。希望作者能继续更新一些更有深度的内容,比如深入探讨Service的生命周期管理等等。
有6位网友表示赞同!
这篇文章对我理解 Android Service 的作用很有帮助,尤其是在讲解如何实现长轮询任务的部分,受益匪浅!
有7位网友表示赞同!
我试着用这种方式下载了Android Service的资源后,发现有很多重复的文件和无法识别的文件。建议作者再次整理一下资源包,不要太混乱...
有5位网友表示赞同!
文章里面提到的 Service 应用场景真不少啊,以后有空也要试试用它的优势去开发一些应用。
有18位网友表示赞同!
Android 服务到底是个什么东西啊?感觉这篇文章写的太专业了,我一个新手看了半天还是一头雾水,能否提供更简单的解释?
有7位网友表示赞同!
总觉得现在的 Android 开发越来越注重后台操作,Service 的学习需求也越来越大。这篇帖子讲解比较清晰,下载资源方便,好评!
有14位网友表示赞同!
下载链接失效了,作者建议修改页面,方便大家获取资料!内容还不错,希望能更新更详细的案例分析。
有14位网友表示赞同!
我觉得这篇帖子的标题写的太笼统了,应该更加具体,比如:"深入解析Android Service: 常见应用场景及开发技巧"这样更能吸引到目标读者。其他的内容还是比较不错的。
有13位网友表示赞同!
我对安卓系统一直觉得没那么多学习点,直到看了这篇文章才知道还有这么关键的服务机制!作者分析真够透彻的,让我对 Android 开发有了新的认识 。
有10位网友表示赞同!