Context字面意思上下文,位于framework package的android.content.Context中,很多方法需要通过 Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的 实例为Activity,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。
Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。
两种类型的Context
在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是 application context,一种是activity context,通常我们在各种类和方法间传递的是activity context。
Context的主要方法
public abstract
1、Context getApplicationContext()
2、ApplicationInfo getApplicationInfo()
3、ContentResolver getContentResolver ()
4、PackageManager getPackageManager ()
5、String getPackageName ()
6、Resources getResources ()
7、SharedPreferences getSharedPreferences (String name, int mode)
8、String getString (int resId)
9、Object getSystemService (String name)
10、String[] databaseList()
11、boolean deleteDatabase()
12、boolean deleteFile()
13、String[] fileList()
14、AssetsManager getAssets()
15、File getCacheDir()
16、File getDatabasePath(String name)
17、File getDir(String name, int mode)
18、File getFilesDir()
19、File getExternalCacheDir()
20、File getExternalFilesDir(String type)
21、CharSequence getText(int resId)
22、FileInputStream openFileInput(String name)
23、FileOutputStream openFileOutput(String name)
24、SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)
25、SQLiteDatabasse openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)
26、Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
27、Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)
28、void sendBroadcast(Intent intent)
29、void sendBroadcast(Intent intent, String receiverPermission)
30、void sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcaseReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtra)
31、void sendOrderedBroadcast(Intent intent, String receiverPermission)
32、void sendStickyBroadcast(Intent intent)
33、void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler schedule, int initialCode, String initialData, Bundle initialExtra)
34、void startActivities(Intent[] intents)
35、void startActivity(Intent intent)
36、CompenentName startService(Intent service)
37、boolean stopService(Intent service)
38、void unbindService(ServiceConnection conn)
39、void unregisterReceiver(BroadcastReceiver receiver)
Context 数目的计算:
总Context实例个数 = Service个数+ Activity个数+ 1(Application对应的Context实例)
Context类的继承关系
Context类 路径: /frameworks/base/core/java/android/content/Context.java