getSystemService
getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。
传入的Name | 返回的对象 | 说明 |
WINDOW_SERVICE | WindowManager | 管理打开的窗口程序 |
LAYOUT_INFLATER_SERVICE | LayoutInflater | 取得xml里定义的view |
ACTIVITY_SERVICE | ActivityManager | 管理应用程序的系统状态 |
POWER_SERVICE |
PowerManger | 电源的服务 |
ALARM_SERVICE | AlarmManager | 闹钟的服务 |
NOTIFICATION_SERVICE |
NotificationManager | 状态栏的服务 |
KEYGUARD_SERVICE | KeyguardManager | 键盘锁的服务 |
LOCATION_SERVICE | LocationManager | 位置的服务,如GPS |
SEARCH_SERVICE | SearchManager | 搜索的服务 |
VEBRATOR_SERVICE | Vebrator | 手机震动的服务 |
CONNECTIVITY_SERVICE | Connectivity | 网络连接的服务 |
WIFI_SERVICE | WifiManager | Wi-Fi服务 |
TELEPHONY_SERVICE | TeleponyManager | 电话服务 |
getSystemService()方法是如何实现的?
在研究Android Application Framwork层的源代码遇到一个问题
就是Activity里面的getSystemService()方法是怎么实现的? 我觉得会不会是系统自动调用native实现这个抽象类Context? |
你好 在 framework 层文件 ContextImpl.java 文件里面
根据service 的类型 调用相应的 manager层
public Object getSystemService(String name) {
if (WINDOW_SERVICE.equals(name)) {
return WindowManagerImpl.getDefault();
} else if (LAYOUT_INFLATER_SERVICE.equals(name)) {
synchronized (mSync) {
LayoutInflater inflater = mLayoutInflater;
if (inflater != null) {
return inflater;
}
mLayoutInflater = inflater =
PolicyManager.makeNewLayoutInflater(getOuterContext());
return inflater;
}
} else if (ACTIVITY_SERVICE.equals(name)) {
return getActivityManager();
} else if (INPUT_METHOD_SERVICE.equals(name)) {
return InputMethodManager.getInstance(this);
} else if (ALARM_SERVICE.equals(name)) {
return getAlarmManager();
} else if (ACCOUNT_SERVICE.equals(name)) {
return getAccountManager();
} else if (POWER_SERVICE.equals(name)) {
return getPowerManager();
}
getSystemService相关推荐
- 系统服务-----Activity服务的获取getSystemService
android的后台存在非常多service,它们在系统启动的时候被SystemServer开启.来为系统的正常执行做支撑.Activity中要调用这些service就得使用getSystemServ ...
- Android之getSystemService
getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象.以下介绍系统相应的服务. 传入 ...
- getSystemService() in Android
在之前研究了那么久的bindService()这个API,一直没搞清楚一个问题: 为什么我看到的基本上都是和AMS相关的代码,而之前所学到说如果application要和service打交道都是需要通 ...
- Android Context getSystemService分析
我们知道一个应用的Context个数是Activity个数+Service个数+1 当我们希望获取到系统服务时,可以调用Context的getSystemService方法,如获取到ActivityM ...
- android中getSystemService详解
原文地址:android中getSystemService详解作者:邹斌 http://blog.sina.com.cn/s/blog_71d1e4fc0100o8qr.html http://blo ...
- 项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常
项目需求,项目退出登录的时候,跳转登录页面,重新登录,会重新进入首页.很简单的需求,只需在退出的时候将存储的用户信息销毁,把之前活跃的activity销毁,重新跳转进入登录界面即可.但是在真正执行退出 ...
- getSystemService();的使用
getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象.下面介绍系统相应的服务: 传入 ...
- java.lang.Object android.content.Context.getSystemService(java.lang.String)‘ on a null object
出现原因:在fragment中动态添加一个layout 例如: View notDataView = getLayoutInflater().inflate(R.layout.empty_view, ...
- Android 判断某个服务是否正在运行
判断某个服务是否正在运行的工具类 public class ServiceRunManager {public static boolean isServiceRunning(Context cont ...
最新文章
- 推荐的 PHP 读物列表
- 稳压二级管原理之详解
- 如何解读「量子计算应对大数据挑战:中国科大首次实现量子机器学习算法」?——是KNN算法吗?...
- 最小完美哈希函数简介
- MFC 缩放和显示IplImage
- SAP 电商云 Spartacus UI 产品明细页面路由确定后,加载的是 page template
- 表示我想你的代码java_如何编写可怕的Java代码?
- r怎么对两组数据统计检验_数据科学中最常用的统计检验是什么
- Docker 开发环境的滑坡
- 自动驾驶:梦想已经照进现实?
- Hadoop(一)基础概念
- 手动编辑文件解决冲突_4.2.1 git am patch手动解决冲突的办法
- 9.Nginx 日志管理
- Centos7中完美搭建ftp服务器
- ADS(Advanced Design system)仿真测试元器件输入阻抗
- ckplayer php,ckplayer播放器
- html canvas缩放抗锯齿,Html5 canvas drawImage:如何应用抗锯齿
- PWM的占空比、分辨率
- 搭建-ico图标制作
- Zabbix 监控ESXi服务器【非虚拟机】CPU、内存、硬盘、网络带宽
热门文章
- c语言isfinite_csqrtf - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- qt 工作流_助力提升企业生产力-工作流管理
- java php serialize_PHP serialize 和 JSON 解析与区别
- python中字典和集合的使用
- BZOJ3238:[AHOI2013]差异——题解
- ICE学习之C# Java之间通讯
- JSP笔记——7.自定义标签
- u3d外部资源加载加密
- Java中接口定义成员变量
- 统计sql server数据库中所有表的记录数