美文网首页
安卓----第四周

安卓----第四周

作者: timber_wu | 来源:发表于2016-08-13 19:25 被阅读21次

    1.使用SharedPreference方便地存储数据


    1.1适用与哪些地方?

    保存用户偏好的参数----是否自动登陆,是否记住账号密码,是否在Wifi下才能 联网等相关信息!SharedPreferences使用xml文件, 然后类似于Map集合,使用键-值的形式来存储数据

    1.2获取SharedPreference

    我们可以通过以下两种方法之一创建或者访问shared preference 文件:

    ⑴.getSharedPreferences()— 如果需要多个通过名称参数来区分的shared preference文件, 名称可以通过第一个参数来指定。可在app中通过任何一个Context执行该方法。

    Context context = getActivity();//在此Activity下使用,getContext则可在整个APP下使用

    SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key),Context.MODE_PRIVATE);

    ⑵.getPreferences()— 当activity仅需要一个shared preference文件时。因为该方法会检索activity下默认的shared preference文件,并不需要提供文件名称。

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

    1.3写、删Shared Preference

    为了写shared preferences文件,需要通过执行edit()创建一个 SharedPreferences.Editor。通过类似putInt()与putString()等方法传递keys与values,删除只需获取Key值就可进行删除,修改只需将value值改变再写入即可,最后通过apply()---推荐使用,提交改变.

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedPref.edit();

    editor.putInt(getString(R.string.saved_high_score), newHighScore);

    editor.apply();//异步写,不占用UI

    1.4读Shared Preference

    为了从shared preference中读取数据,可以通过类似于 getInt() 及 getString()等方法来读取。在那些方法里面传递我们想要获取的value对应的key,并提供一个默认的value作为查找的key不存在时函数的返回值。如下:

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

    int defaultValue = getResources().getInteger(R.string.saved_high_score_default);

    long highScore = sharedPref.getInt(getString(R.string.saved_high_score),default);


    2.随心所欲地管理文件


    2.1Android文件的操作模式

    2.2存储在内部还是外部

    所有的Android设备均有两个文件存储区域:"internal" 与 "external" 。 这两个名称来自于早先的Android系统,当时大多设备都内置了不可变的内存(internal storage)及一个类似于SD card(external storage)这样的可卸载的存储部件。之后有一些设备将"internal" 与 "external" 都做成了不可卸载的内置存储,虽然如此,但是这一整块还是从逻辑上有被划分为"internal"与"external"的。只是现在不再以是否可卸载进行区分了。 下面列出了两者的区别:

    2.2.1 Internal storage:

    1.总是可用的

    2.这里的文件默认只能被我们的app所访问。

    3.当用户卸载app的时候,系统会把internal内该app相关的文件都清除干净。

    4.Internal是我们在想确保不被用户与其他app所访问的最佳存储区域。

    2.2.2 External storage:

    1.并不总是可用的,因为用户有时会通过USB存储模式挂载外部存储器,当取下挂载的这部分后,就无法对其进行访问了。

    2.是大家都可以访问的,因此保存在这里的文件可能被其他程序访问。

    3.当用户卸载我们的app时,系统仅仅会删除external根目录(getExternalFilesDir())下的相关文件。

    4.External是在不需要严格的访问权限并且希望这些文件能够被其他app所共享或者是允许用户通过电脑访问时的最佳存储区域。.

    2.2.3 获取External存储的权限

    为了写数据到external storage, 必须在你manifest文件中请求WRITE_EXTERNAL_STORAGE权限:

    <uses-permission android :name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    对于internal storage,我们不需要声明任何权限,因为程序默认就有读写程序目录下的文件的权限。

    2.2.4 文件的相关操作


    2.3 如何访问SDcard

    SD卡的读写

    2.4读取各目录下的文件

    2.4.1读取raw和assets文件夹下的文件:

    res/raw

    文件会被映射到R.java文件中,访问的时候直接通过资源ID即可访问,而且 他不能有目录结构,就是不能再创建文件夹

    assets

    不会映射到R.java文件中,通过AssetManager来访问,能有目录结构,即可以自行创建文件夹

    读取文件资源:

    res/raw

    InputStreamis=getResources().openRawResource(R.raw.filename);

    assets

    AssetManager am=getAssets();

    InputStream is=am.open("filename");


    相关文章

      网友评论

          本文标题:安卓----第四周

          本文链接:https://www.haomeiwen.com/subject/qcghsttx.html