Context简介


本篇仅是个人学习笔记,内容为个人理解,如有错误还请提醒。

  • Context类是一个抽象类,它是由Anroid系统System实现的,他的实现类是ContextImpl类
  • Context拥有作用范围内的所有信息
  • 作用范围为全局的Context拥有全局资源和信息,并且能够启动Activity、Service、BroadcastReciver和ContentProvider
  • Context对象的产生及影响范围
    产生途径 影响范围
    Application创建时
    全局 ,属于程序级Context
    BroadcastReceiver广播接收器.note  的onReciver()中会获得
    全局 ,属于程序级Context
    全局,属于程序级Context
    Activity活动.note 创建时
    Activity中,属于活动级Context
    Service服务.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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值