在学习了很长一段时间的Android基础内容,如果不做及时的复习,那么后面的项目学习起来可能就没那么顺利了,并且复习也是一件很愉快的事。古人有云:“学而时习之不亦说乎”,应该就是这个道理。
~本文大纲~
第一天主要学习的内容相对零散一点,但还是很重要的。
1. SharedPreferences存储数据
2. getFilesDir数据存储在手机上
3. Environment数据存储在SD卡上
4. SQLite数据库存储
1、SharedPreferences存储数据
保存数据
SharedPreferences config = getSharedPreferences("config", MODE_PRIVATE);
boolean commit = config.edit().putString("Hsia", mContent).commit();
if (commit) {
Toast.makeText(getApplicationContext(), "数据保存成功!", Toast.LENGTH_SHORT).show();
mEtContent.setText("");
}
取回数据
String getConfig = getSharedPreferences("config", MODE_PRIVATE).getString("Hsia", "");
if (!("".equals(getConfig))) {
Toast.makeText(getApplicationContext(), "数据取回成功!", Toast.LENGTH_SHORT).show();
mEtContent.setText(getConfig);
}
2、getFilesDir数据存储在手机上
/** * 获取已保存的用户信息 * @param context * @return */
private String getConfigFile(Context context) {
try {
BufferedReader br = new BufferedReader(new FileReader(new File(context.getFilesDir(), FILENAME)));
String data = br.readLine();
br.close();
return data;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/** * 保存用户信息到手机上 * @param context * @param mContent * @return */
private boolean SaveConfig(Context context, String mContent) {
if (mContent != null) {
File file = new File(context.getFilesDir(),FILENAME);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(mContent);
bw.newLine();
bw.close();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}else{
return false;
}
}
3、Environment数据存储在SD卡上
/** * 从sd卡中取出数据 * @return */
private String SDGetConfig() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
try {
FileReader fr = new FileReader(new File(Environment.getExternalStorageDirectory() + SDDownload, FILENAME));
int len = 0;
char[] chs = new char[1024];
String data = "";
while((len = fr.read(chs))!=-1){
data = new String(chs,0,len);
}
fr.close();
return data;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/** * 保存数据到sd卡中 * @param mContent * @return */
private boolean SDSaveConfig(String mContent) {
//判断sd卡是否存在
String state = Environment.getExternalStorageState();
//如果sd卡不存在直接返回false
if (!(Environment.MEDIA_MOUNTED.equals(state))) {
return false;
}else{
try {
FileWriter fw = new FileWriter(new File(Environment.getExternalStorageDirectory() + SDDownload, FILENAME));
fw.write(mContent);
fw.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
4、SQLite数据库存储(相对知识点较多暂时不做演示)
由于获取手机空间大小实际开发中使用较少,并且相对简单,就不做代码测试了,主要就用到Environment(获取SD卡空间)和getFilesDir(获取手机空间)。
关键代码
File storageDirectory = Environment.getExternalStorageDirectory();
long totalSpace = storageDirectory.getTotalSpace();
long usableSpace = storageDirectory.getUsableSpace();
File filesDir = getFilesDir();
long totalSpace = filesDir.getTotalSpace();
long usableSpace = filesDir.getUsableSpace();
String totalSpaceStr = Formatter.formatFileSize(this, totalSpace);
String usableSpaceStr = Formatter.formatFileSize(this, usableSpace);
/** * 生成XML文件的方法 * @return */
private boolean MakeXML() {
//Xml.newSerializer开始拼接数据生成xml
XmlSerializer xmlSerializer = Xml.newSerializer();
//设置xml文件的存放路径
File file = new File(getFilesDir(), "makeXML.xml");
try {
FileOutputStream fos = new FileOutputStream(file);
xmlSerializer.setOutput(fos,"utf-8");
//开始写xml
xmlSerializer.startDocument("utf-8",true);
//开始写xml的根节点
xmlSerializer.startTag(null,"Message");
for (int i = 0; i < 5; i++) {
xmlSerializer.startTag(null,"sms");
xmlSerializer.startTag(null,"address");
xmlSerializer.text("15855225588");
xmlSerializer.endTag(null,"address");
xmlSerializer.startTag(null,"name");
xmlSerializer.text("Hsia");
xmlSerializer.endTag(null,"name");
xmlSerializer.startTag(null,"body");
xmlSerializer.text("Hello!!!!");
xmlSerializer.endTag(null,"body");
xmlSerializer.endTag(null,"sms");
}
xmlSerializer.endTag(null,"Message");
xmlSerializer.endDocument();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/** * 解析XML的方法 * @param file * @return */
private List<Weather> GetResolveXML(File file) {
XmlPullParser parser = Xml.newPullParser();
FileInputStream fis = null;
List<Weather> list = null;
Weather weather = null;
try {
fis = new FileInputStream(file);
parser.setInput(fis,"utf-8");
int type = parser.next();
while(type!=XmlPullParser.END_DOCUMENT){
if (type==XmlPullParser.START_TAG) {
list = new ArrayList<>();
//如果开始标签是weather标签则实例化weather
if ("weather".equals(parser.getName())) {
weather = new Weather();
}else if ("city".equals(parser.getName())) {
//获取节点下的属性值
String id = parser.nextText();
weather.setId(id);
}else if ("name".equals(parser.getName())) {
String name = parser.nextText();
weather.setName(name);
}else if ("pm".equals(parser.getName())) {
String pm = parser.nextText();
weather.setPm(pm);
}else if ("wind".equals(parser.getName())) {
String wind = parser.nextText();
weather.setWind(wind);
}else if ("temp".equals(parser.getName())) {
String temp = parser.nextText();
weather.setTemp(temp);
}
}
type = parser.next();
list.add(weather);
}
fis.close();
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
1、将LogCat信息显示在控制台中
在控制台中输入adb logcat 然后按回车键即可看到LogCat信息,如果需要终止按Ctrl+C键即可。
2、将LogCat信息保存在文件中
执行adb logcat >D:/a.txt 则将日志输出到D:/a.txt文件中。按Ctrl+C键终止日志的输出。
主要学习Android-SQLite和ListView控件的使用