2修改activity_main.xml文件双击AndroidStudio左侧app/src/main/res/layout/activity_main.xml文件,修改后的代码如下,并如下图所示。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout _width="match parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_verticalmargin'android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical margin"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="hello_world" ></RelativeLayout>sapOXDORCOLaEL29
29 2 修改 activity_main.xml 文件 双击 Android Studio 左侧 app/src/main/res/layout/activity_main.xml 文件,修改后的代码如下, 并如下图所示。 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello_world" /> </RelativeLayout>
3修改MainActivity.java文件双击AndroidStudio左侧app/src/main/java/com.example.hellosharedpreferenes/MainActivityjava文件,修改后的代码如下,并如下图所示。packagecom.example.hellosharedpreferences;import android.content.Context;import android.content.SharedPreferences;importandroid.support.v7.app.AppCompatActivity,import android.os.Bundle;import android.util.Log,public class MainActivity extendsAppCompatActivity@OverrideprotectedvoidonCreate(BundlesavedlnstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/获取SharedPreferences对象Context ctx = MainActivity.this;SharedPreferences sp=ctx.getSharedPreferences("SP", MODE_PRIVATE);1存入数据SharedPreferences.Editor editor= sp.editO;editor.putString("STRING_KEY","string");editor.putlnt("INT_KEY", O),editor.putBoolean("BOOLEAN_KEY",true);editor.commit),1/返回STRING_KEY的值Log.d("SP", sp.getsString("STRING_KEY","none");I/如果NOT_EXIST不存在,则返回值为"none"Log.d("SP",sp.getString("NOTEXIST","none"))330
30 3 修改 MainActivity.java 文件 双击 Android Studio 左侧 app/src/main/java/com.example.hellosharedpreferenes/MainActivity. java 文件,修改后的代码如下,并如下图所示。 package com.example.hellosharedpreferences; import android.content.Context; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取 SharedPreferences 对象 Context ctx = MainActivity.this; SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE); //存入数据 SharedPreferences.Editor editor = sp.edit(); editor.putString("STRING_KEY", "string"); editor.putInt("INT_KEY", 0); editor.putBoolean("BOOLEAN_KEY", true); editor.commit(); //返回 STRING_KEY 的值 Log.d("SP", sp.getString("STRING_KEY", "none")); //如果 NOT_EXIST 不存在,则返回值为"none" Log.d("SP", sp.getString("NOT_EXIST", "none")); } }
4运行程序在Android实验箱上运行程序,观察和记录实验结果。在AndroidStudio下部“AndroidMonitorlogcat”表单右上部过滤关键字输入框中,输入关键字“D/SP”,过滤输出结果,如下图所示。在程序代码中,通过getString方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。运行结果中因为并无值为"NOT_EXIST"的Key,所以Log打印出的是其默认值:“none"。在访问一个不存在key值这个过程中,并无任何异常抛出。AndroidMonit办·com example.hellosharedpreferences (294)BoxLab WS-SX-001 Android 4:0,3:API 15atlogrotMontoVerbo园Q·D/SPRegexShow18187prefereness B/sp:atrinTerminalAndroidMonitorPRusTOD程序执行过后,即在实验箱“/data/data/com.example.hellosharedpreferences/sharedprefs”目录下生成了一个SP.xml文件,一个应用可以创建多这样的XML文件。在AndroidStudio下部“Terminal”表单右中,输入ADB命令“adbshell”,以命令方式访间实验箱Linux系统,如下图所示。2TemminalO.idStudioProjects/heTloSharedPreferencesradbshelroot@ubunotaandrgid:/agMessagusTerminalAndroidMonibtRungTOOCEitvent LogiGeadle在AndroidStudio下部“Terminal”表单右中,输入Linux命令“cd/data/data/com.example.hellosharedpreferences/sharedprefs”,进入SP.xml文件所在目录,如下图所示。31
31 4 运行程序 在 Android 实验箱上运行程序,观察和记录实验结果。 在 Android Studio 下部“Android Monitor|logcat”表单右上部过滤关键字输入框中,输入关 键字“D/SP”,过滤输出结果,如下图所示。 在程序代码中,通过 getString 方法,可以方便的获得对应 Key 的 Value 值,如果 key 值错误 或者此 key 无对应 value 值,SharedPreferences 提供了一个赋予默认值的机会,以此保证程 序的健壮性。运行结果中因为并无值为"NOT_EXIST"的 Key,所以 Log 打印出的是其默认 值:“none”。在访问一个不存在 key 值这个过程中,并无任何异常抛出。 程序执行过后,即在实验箱“/data/data/com.example.hellosharedpreferences/shared_prefs”目录 下生成了一个 SP.xml 文件,一个应用可以创建多这样的 XML 文件。 在 Android Studio 下部“Terminal”表单右中,输入 ADB 命令“adb shell”,以命令方式访问 实验箱 Linux 系统,如下图所示。 在 Android Studio 下 部 “ Terminal ” 表 单 右 中 , 输 入 Linux 命令“ cd /data/data/com.example.hellosharedpreferences/shared_prefs”,进入 SP.xml 文件所在目录,如下 图所示
rted successfully+Tahelasharadnrsferenereaes/phered.rha110TODOETerminalSAndreEItLo在Android Studio下部“Terminal”表单右中,输入Linux命令“Is”,列出当前目录下的文件和目录,可以看到SP.xml文件,如下图所示。AsucessfullyTODO Eyent Loo国 Gradle CercTermo在AndroidStudio下部“Terminal”表单右中,输入Linux命令“catSP.xml”,查看SP.xml文件内容,如下图所示。Sa11oshharad nrTKSSTRTNGKEY">string</strintne"2S/shared_prafsrootgandreidi/data/dsta/con.exanple.hellosharedpreferer Event:Log国 Gradle ConsoTODO5:AndroidMETerminal选中菜单Tools|AndroidAndroidDeviceMonitor",弹出“DisableADBIntegration"对话框,如下图所示。DishleADRT?Following debug sessionswill be.closedYesNo单击"DisableADBIntegration"对话框的Yes"按钮,弹出“AndroidDeviceMonitor”,如下图所示。选中左侧的实验箱设备,单击右侧“FileExplorer表单,在"/data/data/com.example.hellosharedpreferences/sharedprefs”目录中有SP.xml文件。32
32 在 Android Studio 下部“Terminal”表单右中,输入 Linux 命令“ls”,列出当前目录下的文 件和目录,可以看到 SP.xml 文件,如下图所示。 在 Android Studio 下部“Terminal”表单右中,输入 Linux 命令“cat SP.xml”,查看 SP.xml 文 件内容,如下图所示。 选中菜单“Tools|Android|Android Device Monitor”,弹出“Disable ADB Integration”对话框,如 下图所示。 单击“Disable ADB Integration”对话框的“Yes”按钮,弹出“Android Device Monitor”,如下图所 示 。 选 中 左 侧 的 实 验 箱 设 备 , 单 击 右 侧 “File Explorer” 表 单 , 在 “/data/data/com.example.hellosharedpreferences/shared_prefs”目录中有 SP.xml 文件
0DO- Devices xeadsHeapAllocatiFile Ex3OL.eNomensm018.7123456|OnircviE018-0145g2018-01-13 07:0913072018-01-13 07:08dnwx1e2018-01-13 07:08drn13nmandrndn2018-01-13107:08drwm.android.soundrecorc01801130708dnxrxdcoeechreco2018-01-13 07:08d.syster2018-01-13 07:082038-01-13:07:082018-01-13 07:082018-01-13: 07:08no08-01*13ndroid.reoc14190ndtnidnne1552018-0o020Pcacn179com.android.calendofle0802002e0deskrioce品1514sharedpre在文件SP.xml上单击鼠标选中,单击FileExplorer"表单右上角Pullafileformthedevice"按钮,弹出"GetDeviceFile"对话框,如下图所示。在左侧选中"FileSystem",在右侧选中“"/home/ada”,单击下方"OK"按钮。XML文件就传送到"/home/ada",使用文件管理器查看该文件。Get Device FileSPxmName3.905BrowseforotrertoldersDhone daEeateFoidcePlacesModnedSi2eaSe01/06/2018Hecertyused18.01Androidstudiorojects12/16/201720090DesktopaDoeimenesfoppyeE41320620712/16/20171060712/16/2017videos12/17/2017aworkspace179 bites 12/160017amnles.desktoCanceCK5再次修改activity_main.xml文件双击AndroidStudio左侧app/src/main/res/layout/activity_main.xml文件,修改后的代码如下,并如下图所示。<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height-"match_parent"android:paddingBottom="@dimen/activity_vertical_margin"33
33 在文件 SP.xml 上单击鼠标选中,单击“File Explorer”表单右上角“Pull a file form the device”按 钮,弹出“Get Device File”对话框,如下图所示。在左侧选中“File System”,在右侧选中 “/home/ada”,单击下方“OK”按钮。XML 文件就传送到“/home/ada”,使用文件管理器查看该 文件。 5 再次修改 activity_main.xml 文件 双击 Android Studio 左侧 app/src/main/res/layout/activity_main.xml 文件,修改后的代码如下, 并如下图所示。 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin