理解Context

对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

results for ""

    No results matching ""