对context的解释:
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
我们熟知几个类Application 、Activity 、Service与Context的关系
ContextWrapper extends Context
Application extends ContextWrapper
Service extends ContextWrapper
ContextThemeWrapper extemds ContextWrapper
Activity extends ContextThemeWrapper
Application几个关键方法:
attach(Context)->attachBaseContext(Context)调用到ContextWrapper中
ContextImpl之分析几个方法
databaseList()
@Override
public String[] databaseList() {
return FileUtils.listOrEmpty(getDatabasesDir());
}
private File getDatabasesDir() {
synchronized (mSync) {
if (mDatabasesDir == null) {
if ("android".equals(getPackageName())) {
mDatabasesDir = new File("/data/system");
} else {
mDatabasesDir = new File(getDataDir(), "databases");
}
}
return ensurePrivateDirExists(mDatabasesDir);
}
}
//方法的测试数据
String[] fileDAList = mContext.databaseList();//
获取的是/data/data/包名/databases/文件夹下的 db文件
String[] fileList = mContext.fileList();//
获取的是/data/data包名/files/文件夹下的 文件
ApplicationInfo applicationInfo = mContext.getApplicationInfo();//
String dataDir = applicationInfo.dataDir;//
/data/user/0/com.example.wangwujun.myapplication
String deviceProtectedDataDir = applicationInfo.deviceProtectedDataDir;//
/data/user\_de/0/com.example.wangwujun.myapplication
String nativeLibraryDir = applicationInfo.nativeLibraryDir;//
/data/app/com.example.wangwujun.myapplication-1/lib/arm
String publicSourceDir = applicationInfo.publicSourceDir;//
/data/app/com.example.wangwujun.myapplication-1/base.apk
String sourceDir = applicationInfo.sourceDir;//
/data/app/com.example.wangwujun.myapplication-1/base.apk
String[] strings = applicationInfo.sharedLibraryFiles;// 未获得值
String[] splitPublicSourceDirs = applicationInfo.splitPublicSourceDirs;
/data/app/com.example.wangwujun.myapplication-1/split\_lib\_dependencies\_apk.apk
/data/app/com.example.wangwujun.myapplication-1/split\_lib\_slice\_xx\_apk.apk
String[] splitSourceDirs = applicationInfo.splitSourceDirs;//
/data/app/com.example.wangwujun.myapplication-1/split\_lib\_dependencies\_apk.apk
/data/app/com.example.wangwujun.myapplication-1/split_lib_slice_xx_apk.apk