赞
踩
getSystemService and Manager
Android开发中有很多manager,那么这些manager怎么获取到对应的对象呢,这个时候就会需要用到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 电话服务
获取ActivityManager对象的方法是在拥有context的环境下使用下面的方法: ActivityManager activityManager= (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager常用的方法:
getRunningAppProcesses():获取系统中正在运行的所有的进程的信息。
getRunningServices:获取系统中正在运行的所有的服务的信息。
getMemoryInfo():获取系统内存信息。
getProcessMemoryInfo:获取某个或某几个进程占用的内存信息。
getDeviceConfigurationInfo():获取设备的配置属性。
2. FragmentManager:在Activity中与Fragment进行交互的接口
获取FragmentManager对象的方法是在Activity中使用下面的方法:
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentManager常用方法:
getFragments():获取FragmentManager中所有的Fragment。
findFragmentById():通过id找到对应的Fragment。
beginTransaction():开启FragmentManager的事务。
FragmentManager只能直接对Fragment进行查询操作,不能直接进行增加,删除,更新操作,要进行这些操作必须在FragmentManager开启的事务中进行。开启的事务的任务都完成后要提交事务。
fragmentManager.beginTransaction().replace(R.id.fragment,fragment).commit();
获取PackageManager对象的方法是在在拥有context的环境下使用下面的方法: PackageManager packageManager=getPackageManager();
PackageManager常用的方法:
getInstalledApplications():返回在设备上安装的所有应用程序包的列表。
getInstalledPackages():返回在设备上安装的所有包的列表。
getActivityInfo():获取对应组件名的Activity的信息。
注意其实PackageManager是一个抽象类。
DownloadManager的基本使用方法:
DownloadManager的基本使用
public void downloadManager(){
//获取系统服务的
DownloadManager downloadManager= (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
//创建一个DownloadManager的请求
DownloadManager.Request request=new DownloadManager.Request(Uri.parse(" http://i.imgur.com/iXgyWbG.png "));
//设置请求允许的联网方式:移动网络与wifi都可以 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE| DownloadManager.Request.NETWORK_WIFI);
//禁止发出通知,既后台下载 //request.setShowRunningNotification(false);
该方法被setNotificationVisibility取代了 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
//显示下载界面 request.setVisibleInDownloadsUi(true);
//设置下载后文件存放的位置,存放在/sdcard/Android/data/<包名>/files/Pictures目录下面 request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_PICTURES, "iXgyWbG.png");
//将下载请求放入队列
downloadManager.enqueue(request); }
ConnectivityManager的主要作用是:
监视网络连接(Wi-Fi、GPRS、UMTS、等)
当网络连通性的变化发送广播意图
当连接的网络丢失,会自动连接别的网络
提供一个允许应用程序查询可用网络的粗粒度或细粒度的应用程序接口
提供一个允许应用程序请求和选择网络的应用程序的接口
ConnectivityManager的基本使用方法:
/ * 检测当的网络(WLAN、3G/2G)状态
@param context Context @return true
表示至少有一种网络处于连接状态 */
public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (info != null && info.isConnected()) {
// 当前网络是连接的
if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; }
WindowManager是一个接口,基本使用方法如下:
WindowManager windowManager=getWindowManager(); //向windowManager中添加视图 windowManager.addView(view); //删除windowManager中的视图 windowManager.removeView(view);
NotificationManager的基本使用方法:
NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE); PendingIntent intent=PendingIntent.getActivity(this,0,new Intent(MainActivity.this,MainActivity.class),0); Notification notification=new NotificationCompat.Builder(this) .setTicker("有新通知了") .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("通知标题") .setContentText("通知内容") .setWhen(0) .setContentIntent(intent) .build(); notificationManager.notify(0,notification);
获取TelephonyManager对象的方法是在拥有context的环境下使用下面的方法: TelephonyManager telephonyManager= (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
TelephonyManager常用方法:
getCallState():返回电话状态。
TelephonyManager.CALL_STATE_IDLE无任何状态时
TelephonyManager.CALL_STATE_OFFHOOK接起电话时
TelephonyManager.CALL_STATE_RINGING电话进来时
getCellLocation():获取当前电话的位置
getDataActivity():获取数据活动状态
TelephonyManager.DATA_ACTIVITY_IN活动,正在接受数据
TelephonyManager.DATA_ACTIVITY_OUT活动,正在发送数据
TelephonyManager.DATA_ACTIVITY_INOUT活动,正在接受和发送数据
TelephonyManager.DATA_ACTIVITY_NONE活动,但无数据发送和接受
getDeviceId():返回设备id(当前移动终端的唯一标识)
getLine1Number():返回手机号码
获取LocationManager对象的方法是在拥有context的环境下使用下面的方法: LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
LocationManager常用方法:
getAllProviders():获取所有能提供位置服务的Provider
getLastKnownLocation():获取上次开启位置服务记录的位置
requestLocationUpdates():注册位置更新的监听者
获取AlarmManager对象的方法是在拥有context的环境下使用下面的方法: AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
AlarmManager常用方法:
setTime(long millis):设置系统时钟时间。
setTimeZone(String timeZone):设置系统时钟时区。
setAlarmClock(AlarmClockInfo info, PendingIntent operation):设置一个警报来代表闹钟。
set(int type, long triggerAtMillis, PendingIntent operation):设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。
setRepeating(int type, long triggerAtMillis,long intervalMillis, PendingIntent operation)
:设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。
setInexactRepeating(int type, long triggerAtMillis,long intervalMillis, PendingIntent operation)
:设置重复闹钟,与setRepeating
方法类似,区别是setRepeating
闹钟两次执行的间隔时间固定,而setInexactRepeating
闹钟两次执行的间隔时间不固定。
上述方法中的type
参数有五种值:
AlarmManager.ELAPSED_REALTIME
:表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始)。
AlarmManager.ELAPSED_REALTIME_WAKEUP
:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间。
AlarmManager.RTC
:表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间。
AlarmManager.RTC_WAKEUP
:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间。
AlarmManager.POWER_OFF_WAKEUP
:表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。