温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

数据持久化

发布时间:2020-07-08 15:20:10 来源:网络 阅读:264 作者:鹭岛猥琐男 栏目:移动开发

数据持久化:
由于更高优先级Activity的跳转,没有对当前页面数据的及时保存,导致原本已经输入的数据丢失。
通过打印日志,不然发现:Activity的跳转过程中,必须执行onstop方法,而Activity的重现,必须执行OnStart方法,所有数据持久化,就是在onstop方法中,对数据进行进行保存
在OnStart方法中,对数据进行读取,并显示在原来的位置上
接下来就是相应的步骤:
1、在onstop方法中:
@Override
   protected void onStop()
   {
       Log.e("MainActivity", "onStop");
       super.onStop();
       FileOutputStream fos=null;
       try
       {
           fos=new FileOutputStream(PATH);
           fos.write(et_account.getText().toString().getBytes());
       }
       catch (FileNotFoundException e)
       {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
       catch (IOException e)
       {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }finally{
           if(fos!=null){
               try
               {
                   fos.close();
               }
               catch (IOException e)
               {
                   Log.e("MainActivity", "关闭流失败");
               }
           }
       }


   }

2、在onstart方法中:
   @Override
   protected void onStart()
   {
       Log.e("MainActivity", "onStart");
       super.onStart();
       FileInputStream fis=null;
       StringBuffer buffer=new StringBuffer();
       try
       {
           fis=new FileInputStream(PATH);
           int len;
           byte b[]=new byte[1024];
           while(-1!=(len=fis.read(b))){
               buffer.append(new String(b, 0,len));
           }
          et_account.setText(buffer.toString().trim());
       }
       catch (FileNotFoundException e)
       {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
       catch (IOException e)
       {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }finally{
           if(fis!=null){
               try
               {
                   fis.close();
               }
               catch (IOException e)
               {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
               }
           }
       }
   }


3、最后别忘了加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
如果在genymotion模拟器中,虽然不加权限也可以,但是在真机以及官方模拟器上面,不加权限就不能用了


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI