logcat
-
日志信息总共分为5个等级
-
verbose
-
debug
-
info
-
warn
-
error
-
System.out.print()
(1)Log.v:这里的v代表Verbose啰嗦的意思,对应的log等级为VERVOSE。采用该等级的log,任何消息都会输出。
(2)Log.d:这里的d代表Debug调试的意思,对应的log等级为DEBUG。采用该等级的log,除了VERBOSE级别的log外,剩余的4个等级的log都会被输出。
(3)Log.i:这里的i代表information,为一般提示性的消息,对应的log等级为INFO。采用该等级的log,不会输出VERBOSE和DEBUG信息,只会输出剩余3个等级的信息。
(4)Log.w:w代表warning警告信息,一般用于系统提示开发者需要优化android代码等场景,对应的等级为WARN。该级别log,只会输出WARN和ERROR的信息。
(5)Log.e:e代表error错误信息,一般用于输出异常和报错信息。该级别的log,只会输出该级别信息。一般Android系统在输出crassh等致命信息的时候,都会采用该级别的log。
-
-
定义过滤器方便查看
-
System.out.print输出的日志级别是info,tag是System.out
-
Android提供的日志输出api
文件读写操作
- Ram内存:运行内存,相当于电脑的内存
- Rom内存:内部存储空间,相当于电脑的硬盘
- /data/data/包名/xxx
- sd卡:外部存储空间,相当于电脑的移动硬盘
在内部存储空间中读写文件 - /sdcard/
使用路径api读写文件
-
getFilesDir()得到的file对象的路径是data/data/包名/files
- 存放在这个路径下的文件,只要你不删,它就一直在
-
getCacheDir()得到的file对象的路径是data/data/包名/cache
-
存放在这个路径下的文件,当内存不足时,有可能被删除
-
系统管理应用界面的清除缓存,会清除cache文件夹下的东西,清除数据,会清除整个包名目录下的东西
-
openFileOutput/openFileInput的四种模式(直接在/data/data/包名/files目标下操作)
Context.MODE_PRIVATE: 指定该SharedPreferences数据只能被本应用程序读、写;
Context.MODE_WORLD_READABLE: 指定该SharedPreferences数据能被其他应用程序读,但不能写,但是google不建议使用这个
Context.MODE_WORLD_WRITEABLE: 指定该SharedPreferences数据能被其他应用程序读,但是google不建议使用这个
Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;
了解:
android底层是linux: -
MODE_PRIVATE:-rw-rw----
-
MODE_APPEND:-rw-rw----
-
MODE_WORLD_WRITEABLE:-rw-rw–w-
-
MODE_WORLD_READABLE:-rw-rw-r–
Linux文件的访问权限- 在Android中,每一个应用是一个独立的用户
- drwxrwxrwx
- 第1位:d表示文件夹,-表示文件
- 第2-4位:rwx,表示这个文件的拥有者用户(owner)对该文件的权限
- r:读
- w:写
- x:执行
- 第5-7位:rwx,表示跟文件拥有者用户同组的用户(grouper)对该文件的权限
- 第8-10位:rwx,表示其他用户组的用户(other)对该文件的权限
在外部存储读写数据
sd卡的路径
-
sdcard:2.3之前的sd卡路径
-
mnt/sdcard:4.3之前的sd卡路径
-
storage/sdcard:4.3之后的sd卡路径
-
最简单的打开sd卡的方式
File file = new File("sdcard/info.txt");
- 写sd卡需要权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- 读sd卡,在4.0之前不需要权限,4.0之后可以设置为需要
- 使用api获得sd卡的真实路径,部分手机品牌会更改sd卡的路径(这个方法已经过时)
Environment.getExternalStorageDirectory()
- 判断sd卡是否准备就绪
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
`MEDIA_UNKNOWN SD卡未知`
`MEDIA_REMOVED SD卡移除`
`MEDIA_UNMOUNTED SD卡未安装`
`MEDIA_CHECKING SD卡检查中,刚装上SD卡时`
`MEDIA_NOFS SD卡为空白或正在使用不受支持的文件系统`
`MEDIA_MOUNTED SD卡安装`
`MEDIA_MOUNTED_READ_ONLY SD卡安装但是只读`
`MEDIA_SHARED SD卡共享`
`MEDIA_BAD_REMOVAL SD卡移除错误`
`MEDIA_UNMOUNTABLE 存在SD卡但是不能挂载,例如发生在介质损坏`
google建议使用的名部目录
```
Context.getExternalFilesDirs(String)files目录
Context.getExternalCacheDirs()缓存目录
Context.getExternalMediaDirs()这个是API大于21以上使用
说明:this.getExternalFilesDir()
1.如果填空,那么就是sdcard/Android/data/包名/files/
2.如果填具体的文件夹名,那么就是sdcard/Android/data/包名/files/文件夹名
3.如果填系统给我们定义的名称例:Environment.DIRECTORY_DOWNLOADS那么会在sdcard/Android/data/包名/files/Download文件夹目录下
DIRECTORY_MUSIC 音乐目录
DIRECTORY_PICTURES 图片目录
DIRECTORY_MOVIES 电影目录
DIRECTORY_DOWNLOADS 下载目录
DIRECTORY_DCIM 相机拍照或录像文件的存储目录
DIRECTORY_DOCUMENTS 文件文档目录
```
SharedPreference
用SharedPreference存储账号密码
-
往SharedPreference里写数据
//1.拿到一个SharedPreference对象
SharedPreferences sp = getSharedPreferences(“config”, MODE_PRIVATE);
//2.拿到编辑器,开启编辑模式
Editor ed = sp.edit();
//3.写数据
ed.putBoolean(“name”, name); //4.提交
ed.commit();
-
从SharedPreference里取数据
//1.拿到一个SharedPreference对象
SharedPreferences sp = getSharedPreferences(“config”, MODE_PRIVATE);
//2.从SharedPreference里取数据 //sp.getXX(键,没取到返回默认值)
String name = sp.getBoolean(“name”, “”);
-
3)删除指定数据 editor.remove(“name”); editor.commit();
-
4)清空数据 editor.clear(); editor.commit();