菜鸟的博客

纵有疾风起,人生不言弃。

导航

安卓活动生命周期以及数据存储

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 复制的网址

 

posted on 2024-02-20 15:18  hhmzd233  阅读(11)  评论(0编辑  收藏  举报