10.6.3 读取Settings配置

读取Settings配置由retrieveSettings方法完成,代码如下:


private void retrieveSettings(){

//通过Context运行环境获得访问Content Provider的ContentResolver

final ContentResolver resolver=mContext.getContentResolver();

//读取Settings中设置的需要调试的App包名

String debugApp=Settings.System.getString(

resolver, Settings.System.DEBUG_APP);

//读取Settings的wait_for_debugger配置

boolean waitForDebugger=Settings.System.getInt(

resolver, Settings.System.WAIT_FOR_DEBUGGER,0)!=0;

//读取Settings的always_finish_activities配置

boolean alwaysFinishActivities=Settings.System.getInt(

resolver, Settings.System.ALWAYS_FINISH_ACTIVITIES,0)!=0;

Configuration configuration=new Configuration();

//读取Settings中用户偏好设置信息,目前只有font_scale信息

Settings.System.getConfiguration(resolver, configuration);

//将上述Settings配置信息存入ActivityManagerService

synchronized(this){

mDebugApp=mOrigDebugApp=debugApp;

mWaitForDebugger=mOrigWaitForDebugger=waitForDebugger;

mAlwaysFinishActivities=alwaysFinishActivities;

updateConfigurationLocked(configuration, null, false, true);

}

}


retrieveSettings主要从Settings中读取了以下四种配置信息。

debug_app:需要调试的应用程序包名。

wait_for_debugger:如果设置为1,当启动debug_app时,该应用会等待调试器;如果设置为0则正常运行。

always_finish_activities:如果设置为1,Activity Manager会直接结束那些不再需要的Activity;如果设置为0,则遵循正常的生命周期。

font_scale:与字体大小相关的配置。

这些配置信息最终都存入ActivityManagerService的相关成员变量中。接下来进入第四部分内容。