安卓活动生命周期以及数据存储
Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合, 这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认情况下,每当我 们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或 调用finish() 方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会 重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。
安卓活动的四种状态:运行状态,暂停状态,停止状态,销毁状态。其他几种状态容易理解,这里简单解释下暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。例如手机浏览器界面时出现的下载提示。
安卓的文件储存:JavaIO流读取和SharedPreferences对象进行存储。
JAVAIO流储存:主要用到了OpenFileOutput()方法
public void save(String inputText){ FileOutputStream fileOutputStream=null; BufferedWriter bufferedWriter=null; try { fileOutputStream=openFileOutput("data", Context.MODE_PRIVATE); bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream)); bufferedWriter.write(inputText); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(bufferedWriter!=null){ try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
JAVAIO流读取:主要用到了OpenFileInput()方法
public String load(){ FileInputStream fileInputStream=null; BufferedReader bufferedReader=null; StringBuilder stringBuilder=new StringBuilder(); try { fileInputStream=openFileInput("data"); bufferedReader=new BufferedReader(new InputStreamReader(fileInputStream)); String line=""; while((line=bufferedReader.readLine())!=null){ stringBuilder.append(line); } } catch (IOException e) { e.printStackTrace(); }finally { if(bufferedReader!=null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } return stringBuilder.toString(); }
不过相比于JAVAIO流,SharedPreferences对象进行存储读取更为方便,强烈推荐使用。
储存:
SharedPreferences.Editor editor=getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("name","小王"); editor.putInt("age",18); editor.putBoolean("marry",false); editor.apply();
读取:
SharedPreferences preferences=getSharedPreferences("data",MODE_PRIVATE); String name=preferences.getString("name","小李"); int age=preferences.getInt("age",19); boolean marry=preferences.getBoolean("marry",true); Log.d("正常活动","姓名:"+name); Log.d("正常活动","年龄:"+age); Log.d("正常活动","婚姻状况:"+marry);
文件保存目录(第一个是javaio流,第二个是sharedpreferences)
用git bash 下载源码:
访问github地址,找到克隆或者下载按钮,复制网址
打开 git bash窗口,输入命令:git clone 复制的网址