Android getSystemService获取系统相应的服务

getSystemService是Android很重要的一个API,它是Activity的一个方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。以下介绍系统相应的服务。

传入的Name返回的对象说明
WINDOW_SERVICEWindowManager管理打开的窗口程序
LAYOUT_INFLATER_SERVICELayoutInflater取得xml里定义的view
ACTIVITY_SERVICEActivityManager管理应用程序的系统状态

POWER_SERVICE

PowerManger电源的服务
ALARM_SERVICEAlarmManager闹钟的服务

NOTIFICATION_SERVICE

NotificationManager状态栏的服务
KEYGUARD_SERVICEKeyguardManager键盘锁的服务
LOCATION_SERVICELocationManager位置的服务,如GPS
SEARCH_SERVICESearchManager搜索的服务
VEBRATOR_SERVICEVebrator手机震动的服务
CONNECTIVITY_SERVICEConnectivity网络连接的服务
WIFI_SERVICEWifiManagerWi-Fi服务
TELEPHONY_SERVICETeleponyManager电话服务





















1.WindowManager经常在Android开发中会使用到:


如得到窗口的宽高:

1
2
3
4
WindowManager wm = this.getWindowManager();
//目前已经被API丢弃但可以使用的方法
int scwidth = wm.getDefaultDisplay().getWidth();
int scheight = wm.getDefaultDisplay().getHeight();

比如创建系统顶级窗口,实现悬浮窗口效果等

1
2
3
4
5
WindowManager wManager = getApplicationContext().getSystemService( Context. WINDOW_ SERVICE);
private WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams();
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT;
wManager.addView(view,wmParams);

我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个Dialog或者Toast。这种方式固然简单,但是在有些情况下,我们要求的只是简单的显示,用Activity显然是多余,这个时候,我们如何处理呢?

通过WindowManager的addView()方法,并设置WindowManager.LayoutParams的相关属性,就可以往WindowManager中加入所需要的View,而根据WindowManager.LayoutParams属性不同,也就能实现不同的效果。如果需要将View从WindowManager中移除,只需要调用removeView()即可。

2.LayoutInflater经常在Android开发中会使用到:

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
具体作用:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
LayoutInflater 是一个抽象类,在文档中如下声明:
public abstract class LayoutInflater extends Object
获得 LayoutInflater 实例的三种方式
1. LayoutInflater inflater = getLayoutInflater();//调用Activity的getLayoutInflater() 
2. LayoutInflater inflater = LayoutInflater.from(context);  
3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

3.NotificationManager经常在Android开发中会使用到:

一、创建Notification 

通过NotificationManager的notify(int,Notification)方法来启动Notification。  
第一个参数唯一的标识该Notification,第二个参数就是Notification对象。  

二、更新Notification  

调用 Notification的setLatestEventInfo方法来更新内容,然后再调用NotificationManager的notify()方法即可。
、删除Notification 

通过NotificationManager的cancel(int)方法,来清除某个通知。其中参数就是Notification的唯一标识ID。 

当然也可以通过cancelAll()来清除状态栏所有的通知。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值