context什么意思

Context在Java中的出现是如此频繁,但其中文翻译“上下文”又是如此诡异拗口,因此导致很多人不是很了解Context的具体含义是指什么,所以很有必要来深究一下这词的含义。

context什么意思

先来举几个JAVA中用到Context的例子

(1)JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。请看下面的代码:

InitialContext ic=new InitialContext();RMIAdaptor server=(RMIAdaptor)ic.lookup("jmx/invoker/RMIAdaptor");

这是一段JBoss中获取MBean的远程调用类的代码。在这里面通过InitialContext中JNDI注册的名称“jmx/invoker/RMIAdaptor”来获得RMIAdaptor对象。这和JAVA集合中的MAP有点象,有一个String的key,key对映着它的对象。

(2)ApplicationContext 是内含configuration.xml配置文件的信息,使得可以通过getBean用名称得到相应的注册对象。

Context常用方法:

// 获取应用程序包的AssetManager实例

public abstract AssetManager getAssets();

// 获取应用程序包的Resources实例

public abstract Resources getResources();

// 获取PackageManager实例,以查看全局package信息

public abstract PackageManager getPackageManager();

// 获取应用程序包的ContentResolver实例

public abstract ContentResolver getContentResolver();

// 它返回当前进程的主线程的Looper,此线程分发调用给应用组件(activities, services等)

public abstract Looper getMainLooper();

// 返回当前进程的单实例全局Application对象的Context

public abstract Context getApplicationContext();

// 从string表中获取本地化的、格式化的字符序列

public final CharSequence getText(int resId) {

return getResources().getText(resId);

}

// 从string表中获取本地化的字符串

public final String getString(int resId) {

return getResources().getString(resId);

}

public final String getString(int resId, Object... formatArgs) {

return getResources().getString(resId, formatArgs);

}

// 返回一个可用于获取包中类信息的class loader

public abstract ClassLoader getClassLoader();

// 返回应用程序包名

public abstract String getPackageName();

// 返回应用程序信息

public abstract ApplicationInfo getApplicationInfo();

// 根据文件名获取SharedPreferences

public abstract SharedPreferences getSharedPreferences(String name,

int mode);

// 其根目录为: Environment.getExternalStorageDirectory()

public abstract File getExternalFilesDir(String type);

// 返回应用程序obb文件路径

public abstract File getObbDir();

// 启动一个新的activity

public abstract void startActivity(Intent intent);

// 启动一个新的activity

public void startActivityAsUser(Intent intent, UserHandle user) {

throw new RuntimeException("Not implemented. Must override in a subclass.");

}

// 启动一个新的activity

// intent: 将被启动的activity的描述信息

// options: 描述activity将如何被启动

public abstract void startActivity(Intent intent, Bundle options);

// 启动多个新的activity

public abstract void startActivities(Intent[] intents);

// 启动多个新的activity

public abstract void startActivities(Intent[] intents, Bundle options);

// 广播一个intent给所有感兴趣的接收者,异步机制

public abstract void sendBroadcast(Intent intent);

// 广播一个intent给所有感兴趣的接收者,异步机制

public abstract void sendBroadcast(Intent intent,String receiverPermission);

//发送有序广播

public abstract void sendOrderedBroadcast(Intent intent,String receiverPermission);

public abstract void sendOrderedBroadcast(Intent intent,

String receiverPermission, BroadcastReceiver resultReceiver,

Handler scheduler, int initialCode, String initialData,

Bundle initialExtras);

public abstract void sendBroadcastAsUser(Intent intent, UserHandle user);

public abstract void sendBroadcastAsUser(Intent intent, UserHandle user,

String receiverPermission);

// 注册一个BroadcastReceiver,且它将在主activity线程中运行

public abstract Intent registerReceiver(BroadcastReceiver receiver,

IntentFilter filter);

//取消注册BroadcastReceiver

public abstract Intent registerReceiver(BroadcastReceiver receiver,

IntentFilter filter, String broadcastPermission, Handler scheduler);

public abstract void unregisterReceiver(BroadcastReceiver receiver);

// 请求启动一个application service

public abstract ComponentName startService(Intent service);

// 请求停止一个application service

public abstract boolean stopService(Intent service);

// 连接一个应用服务,它定义了application和service间的依赖关系

public abstract boolean bindService(Intent service, ServiceConnection conn,

int flags);

// 断开一个应用服务,当服务重新开始时,将不再接收到调用,

// 且服务允许随时停止

public abstract void unbindService(ServiceConnection conn);

// 返回系统级service

public abstract Object getSystemService(String name);

//检查权限

public abstract int checkPermission(String permission, int pid, int uid);

// 返回一个新的与application name对应的Context对象

public abstract Context createPackageContext(String packageName,

int flags) throws PackageManager.NameNotFoundException;

// 返回基于当前Context对象的新对象,其资源与display相匹配

public abstract Context createDisplayContext(Display display);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ea02087cd2dabe24006c02cd960c867d.html