本篇仅是个人学习笔记,内容为个人理解,如有错误还请提醒。
- Context类是一个抽象类,它是由Anroid系统System实现的,他的实现类是ContextImpl类
- Context拥有作用范围内的所有信息
- 作用范围为全局的Context拥有全局资源和信息,并且能够启动Activity、Service、BroadcastReciver和ContentProvider
- Context对象的产生及影响范围
产生途径 影响范围 Application创建时 全局 ,属于程序级ContextBroadcastReceiver广播接收器.note 的onReciver()中会获得 全局 ,属于程序级ContextContentProvider内容提供程序——应用程序之间数据库共享.note 的getContext()中会获得全局,属于程序级ContextActivity活动.note 创建时Activity中,属于活动级ContextService服务.note 创建时Service中,属于服务级Context
非程序级的Context是随相应活动、服务结束而变得不可用的,因为Activity和Service本身就属于是一种Context对象。
Context类的继承关系图:
Context类常用的方法:
getSystemService(String name
)
|
获得相应的管理器。常用的有:ActivityManager、ServiceManager、LayoutInflater、NotificationManager(通知管理器)等
|
getSystemService(Class<T>serviceClass)
| 从相应活动(服务)中获得其相应的管理器,google不推荐这么做 |
getResource() |
获得包中的Resuorces实例对象
|
getAssets()
|
获得包中的Asset资源管理器AssetManager
|
getSaredPreferences(String name,int mode)
|
获得相应的SharedPreferences对象,当同名的SharedPreferences对象被多个Context获取时,它们可以同时访问这个对象。
name:SharedPraferences的文件名。
mode:操作模式,0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。
|
getApplicationContext()
|
获得全局Context。
|
getApplicationInfo()
|
获得整个程序包的信息对象,即Mainfest.xml中<application>标签的信息。
|
getContentResolver()
|
获得一个内容解析器对象。
|
bindService(Intent servcie,ServiceConnection conn,int flags)
| 可以使一个Activity和Service绑定,绑定后Service会随Activity联动。 service:可以是程序创建的Intent,也可以是Manifest中定义好的IntentFilter。 conn:需要是有效的ServiceConnection对象,用于接收Service的启动和停止信息,这个参数不能为空。 flags:选择这个绑定的操作模式,0为默认;BIND_AUTO_CREATE表示当绑定创建时,就自动的创建Service。 如果绑定创建成功,返回true;不成功则返回false。 |
unbindService(ServiceConnection conn)
|
和一个service解除绑定,至此,这个service就可以被随时停止了。
|
startService(Intent service)
|
启动意图所指service。
|
stopService(Intent service)
|
停止意图所指service。
|
openFileInput(String name)
|
打开一个相应的,私有的、程序包中的可读文件。
|
openFileOutput(String name)
|
打开一个相应的,私有的、程序包中的可写文件。
|
openOrCreateDatabase(String name,int mode,SQLiteDatabase.CursorFactoryfactory)
| 打开一个相应的、私有的、程序包中的数据库。 name:程序包中的数据库名称。 mode:操作模式,0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。 factory:当查询操作被调用的时候,会使用这个对象创建一个Cursor对象。 |
openOrCreateSQLiteDatabase(String name,int mode,SQLiteDatabase.CursorFactory factory,DatabaseErrorHandler errorHandler)
|
打开一个相应的、私有的、程序包中的数据库。
name :程序包中的数据库名称。 mode :操作模式, 0和MODE_PRIVATE都是默认,表示这个preference文件只能被本application(或者同id)访问;MODE_WORLD_READABLE表示外界可读;MODE_WORLD_WRITEABLE表示外界可写。 factory :当查询操作被调用的时候,会使用这个对象创建一个Cursor对象。
errorHandler
:为null表示使用默认的额DatabaseErrorHandler。
|
registerReceiver(BroadcastReceiver receiver,IntentFilter filter)
| 在主线程中注册并运行一个广播接收器BroadcastReceiver,用以接收广播意图。 receiver:广播接收器BroadcastRreceiver对象,用于处理广播broadcast;当知道过滤出来的Intent是“sticky”类型的,那么该项可为空,即不会注册广播接收器。 filter:意图过滤器IntentFilter,用于选择要接收的广播。 如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。 |
registerReceiver(BroadcastReceiver receiver,IntentFilter filter,String broadcastPermission,Handler scheduler)
|
在主线程中注册并运行一个广播接收器BroadcastReceiver,用以接收广播意图。
receiver :广播接收器BroadcastRreceiver对象,用于处理广播broadcast;当知道过滤出来的Intent是“sticky”类型的,那么该项可为空,即不会注册广播接收器。 filter :意图过滤器IntentFilter,用于选择要接收的广播。 如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。
broadcastPermission:指定一个权限来限制可以向这个接收器广播意图的对象,也可以通过这个来在子线程上运行广播接收器。对应sendBroadcast(Iintent,String)。
scheduler:用以表示由那个线程的广播接收器接收广播,为null表示由主线程中的广播接收器接收。
如果过滤获得Sticky类型的Intent对象,那么将把它作为返回值返回;如果获得多个,那么只会返回第一个Intent对象;如果没有过滤到Sticky类型的Intent,那么就返回一个null。
|
unregisterRreciver(BroadcastRreciver reciver) | 取消先前注册的broadcastReciver |
sendBroadcast(Intent intent)
|
发出意图给所有接收相应类型Intent的广播接收器。
这是一个异步的广播,并且不能从接收器获得返回的结果,也不能被接收器终止。如果要实现这些,需要使用sendOrderedBroadcast(Intent,String)。
|
sendBroadcast(Intent intent,String receiverPremission)
|
发出意图给所有接收相应类型Intent的广播接收器。
这是一个异步的广播,并且不能从接收器获得返回的结果,也不能被接收器终止。如果要实现这些,需要使用sendOrderedBroadcast(Intent,String)。
receiverPremission:指定一个权限,接收器必须持有这个权限,才能接收这个广播;为null表示不需要权限。 |
sendOrderedBroadcast(Intent intent,String receiverPermission)
|
发出意图给所有接收相应类型Intent的广播接收器。优先级高的接收器能够比优先级低的接收器更早的接收这条广播。
|
startAtivity(Intent intent)
| 启动意图所指的Activity。 |
startActivity(Intent intent,Bundle options)
|
启动意图所指的Activity,并且指定它的操作模式。
|
startActivity(Intent[] intent,Bundle options) | 依次启动一组Activity,并且指定它们的操作模式。 |
startActivity(Intent[] intent)
|
依次启动一组Activity。
|