sqliteAndroid细笔记–DataStorage

Shared Preferences

  • 即便使用被杀了,shared preference也仍旧存在的

Internal Storage

  • 开创于internal的公文只对本利用开放权限,尽管手机用户本身也心慌意乱使用该公文。假设用户卸载该行使,那么那个文件也一并被卸载
  • 假定想在编译时就放一个文书到应用中,可以把它内置res/raw目录下,同openRawResource打开该文件。对于raw
    file,只好读,不可以写。
  • Cache
    file:若是您只是想临时存储一些文本,那么可以由此getCacheDir来获取行使中用来存储临时文件的目录。当系统中的内部存储空间不够的时候,系统会去除应用中的临时文件。但是更好的做法是用户自己马上清理临时文件夹
  • 获取internla storage的有的形式包涵:Context.openFileInput(),
    getFilesDir(), getDir(), deleteFile(), fileList()等

External Storage

  • 表面存储即可能是miniSD存储卡那种可以移除的红娘,也说不定是设置在小叔子大内部的不可以移除的媒介。存储在external
    storage上的公文可以被用户修改。
  • 假设运用要访问external文件,那么须要各自提请READ_EXTERNAL_STORAGE和WITE_EXTERNAL_STORAGE权限,其中赢得WITE_EXTERNAL_STORAGE权限的同时也获得了READ权限,也就是说要提请读写权限的时候即使申请WRITE就能够了。从4.4开首,假诺使用是造访针对本利用private的公文,那么不须要提请权限。
  • 由于external设备得以被用户卸载,由此在访问external此前,应该使用getExternalStorageState来判断external媒介的情事。
  • external存储分为public和private两种文件,其中public文件能够经过getExternalStoragePublicDirectory(),传入你想保留的文件类型和名字,比如DIRECTOYR_MUSIC和musicDir,来得到对应的文书。那样的话,系统会自行把他们分类到系统库中,并进入相应的provider(假若您不想让您的meida文件被系统扫描并参与MediaStore,那么可以在您的文书夹下边穿件一个名为“.nomedia”的空文件来阻拦被系统扫描,要是您的公文真的是private的,那么应该把那些事物放到app-private目录下)。对于public文件,其他应用通过相应的系统provider或者READ_EXTERNAL_PERMISSION就可以访问取得。public文件不会跟随应用卸载而被活动删除。
  • 万一想在external上囤积一些private的文件,那么应该调用getExternalFilesDir()来取得相应的文书。前边也事关,从4.4方始,访问private文件不须求提请权限,为了处理这种景观,可以这样申请权限

    <user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    

    如此那般就只会在不高于18的时候申请权限了。

  • 因为private文件在使用被卸载的还要被系统除去,而且由于private文件不会被系统扫描到,所以不应该在private中蕴藏属于用户的公文,比如用户通过你的施用编写得到的图样或者下载的音乐,这个文件应当置身public文件中

  • 系统会在internal memory中分配一部分储存空间作为external
    storage,同时由于用户可能会设置比如PCIe闪存卡也会被当作external
    storage。在4.3及更低版本中,getExternalFilesDir()方法只好博得位于internal
    memory上的公文输入,而次欧诺个4.4早先,getExternalFilesDirs()会重临一个file连串,分别代表位于internal和sd卡上的文本输入,并且file连串中的第三个文件被认为首要的蕴藏地点,应用应该先行选取该职位,除非该职位已满。就算想在4.4及以上得到所有的门径,同时协作4.3及以下的本子,那么就足以选用辅助包中的ContextCompact.getExternalFilesDirs(),该方法将在4.4及以上中回到所有路线,同时在4.3及以下中只回去internal路径
  • 固然private文件不会被此外应用通过MediaStore content
    provider拿到,可是其余使用依然可以通过申请READ_EXTERNAL_PERMISSION权限来访问具有的external文件,当然也囊括那一个private文件。所以,假诺你完全不想你的公文被其它应用访问到,那么应该把那么些文件放到internal
    storage中。
  • 由此getExternalCacheDir()方法可以获取external
    cache文件,这么些文件在应用被卸载的时候也会被电动删除。

Databases

  • 在运用中所创立的其余数据库,在行使只要知道的数据库名就可以在其他类中做客,而不得以被别的外部应用访问。
  • 推荐使用SQLiteOpenHelper来创制数据库,通过SQLiteOpenHelper.getWritableDatabase()和SQLiteOpenHelper.getReadableDatabase()来取得SQLiteDatabase对象
  • Android对SQLite是全职能接济的,没有别的限制。不过推荐给数据库使用一个机动增添的字段来作为unique
    ID来很快找到某个记录。假如只是使用内选拔的数码,那么那几个字段并不必须,但借使作为provider的数额,那么必须含有BaseColumns._ID这一个字段
  • sqlite3可以用来debug数据,浏览数据库,执行查询语句
网站地图xml地图