Android | Android上下文

来源:互联网 发布:丁建中知乎 编辑:程序博客网 时间:2024/06/10 21:00

在软件开发领域,上下文主要用于存储进程或应用运行时的资源和对象的引用,我们在接触其他系统和框架的时候也经常会碰到上下文的概念。

在Android应用框架中,根据作用域的不同,上下文可以分为两种:

一种是Activity界面的上下文,即Activity Context;

另一种是Android应用的上下文,即Application Context。


一、界面上下文(Activity Context)

界面上下文(Activity Context)在应用界面(Activity)启动的时候被创建,主要用于保存对当前界面资源的引用。界面上下文在Activity界面控制器类中被使用,当我们需要加载或者访问Activity相关的资源的时候,会需要用到该Activity的上下文对象(比如this)。界面上下文的生命周期跟Activity界面的是同步的,即当Activity被销毁的时候,其对应的上下文也被销毁了。同时,和该上下文有关的控件对象也将被销毁并回收。上下文也可以用于串联Android应用之中的对象和组件。

Context类中比较常用的方法如:

getApplicationContext:获取当前应用的上下文对象

getApplicationInfo:获取当前应用的完整信息并存于ApplicationInfo对象中,其中常用的信息包括包名packageName、图标icon以及权限permission等属性。

getContentResolver:获取ContentResolver对象,用于查询所需的Content Provider提供的信息。

getPackageManager:获取PackageManager对象,PackageManager的用途比ApplicationInfo更加广泛,该类可以从系统的PackageManagerService中获取安装包和运行进程的信息,作用于系统范围。

getPackageName:获取包名,包名(PackageName)可作为Android应用的唯一标志。

getResources:获取应用的资源对象Resource,该对象提供一系列的get方法来获取图形Drawable、字符串String以及视频Movie等资源。

getSharedPreferences:获取用于持久化存储的SharedPreferences对象。

getSystemService:获取系统级别服务的对象,Android应用框架为我们提供了丰富的系统服务,getSystemService方法就是用于获取这些系统服务对象并运用到应用开发中去的。

服务名返回对象服务功能ACTIVITY_SERVICEActivityManager系统应用程序管理ALARM_SERVICEAlarmManager系统闹钟服务CONNECTIVITY_SERVICEConnectivity网络连接服务KEYGUARD_SERVICEKeyguardManager键盘锁服务LAYOUT_INFLATER_SERVICELayoutInflater获取Xml模板中View组件服务LOCATION_SERVICELocationManager位置服务,如GPS等NOTIFICATION_SERVICENotificationManager状态栏和通知栏服务POWER_SERVICEPowerManager系统电源管理SEARCH_SERVICESearchManager系统搜索服务TELEPHONY_SERVICETelephonyManager系统电话服务VIBRATOR_SERVICEVibrator手机震动服务WIFI_SERVICEWifiManager手机WIFI相关服务WINDOW_SERVICEWindowManager系统窗口管理

二、应用上下文(Application Context)

应用上下文(Application Context)在整个应用(Application)开始的时候被创建,用于保存对整个应用资源的引用,在程序中可以通过界面上下文的getApplicationContext方法或者getApplication方法来获取。在实际应用时候,我们通常会把应用上下文当作全局对象的引用来使用,对于不同的应用我们会定义应用对象来使用。

使用步骤:

1、定义继承自Application基类的类。

2、在配置文件中声明1中定义的类。<application>标签

3、可在应用程序的Activity界面中使用getApplicationContext来获取该应用的上下文对象来完成所需功能。

在Android应用框架中,android.app.Activity类和android.app.Application类都是从android.content.Context类继承而来的,所以,可以在Activity和Application中方便地使用this来代替对应上下文。


原创粉丝点击