设备从休眠状态恢复到运行状态时,休眠前的系统也同时转换成后台休眠,再次恢复的时候,经常会出现数据丢失的情况。
解决方法有多种,这里记录一种,采用SharedPreferences来存储休眠前的数据。(一个主的ListActivity,多个Fragment跳转应用)
当系统处于休眠状态时,会调用OnPause,OnStop,onResume有的设备也会直接把打开的软件,直接destroy掉。
所以要在OnPause,OnStop,onResume,OnDestroy四个方法中做处理。
用onStop方法来说明SharePreferences的使用
@Override public void onStop() { // TODO Auto-generated method stub super.onStop(); if (context != null){ //当底层的ListActivity存在的话,做数据存储记录 SharedPreferences sp = context.getSharedPreferences("reserverMainBill", Context.MODE_PRIVATE); //这里声明SharePreferences对象,其中"reserverMainBill",是自定义的 信息,作为后续使用时,获取该对象的标志 SharedPreferences.Editor editor = sp.edit(); //存储需要保存的数据 editor.putString("accnt", boundAccnt); //类似Map,根据key,获取value editor.commit(); } }
这里存储了,整个数据的主核心内容accnt,当设备恢复时,就可以根据SharePreferences来获取accnt值,从而再次显示出来,休眠前的数据。
一般是在主ListActivity的onCreate方法中,做获取数据操作。不过这里还是根据软件需求来自定义获取值的地方。
@Override public void onStop() { // TODO Auto-generated method stub super.onStop(); SharedPreferences sp = context.getSharedPreferences("reserverMainBill", Context.MODE_PRIVATE); if(sp != null && !sp.getString("accnt", "").equals("")) { boundAccnt = sp.getString("accnt", ""); } }
因为是采用的ListActivity-Fragment模式的框架,所以会经常涉及到Fragment跳转显示。
如果设备有外界设备,常常会自行在系统休眠前结束掉正在运行的设备。
所以,在程序中获取到保存的主数据值后,要在oncreate方法中,再次跳转一下对应的Fragment,才可以正常显示系统休眠设备前,正在打开的Fragment中显示的数据。
sp = this.getSharedPreferences("reserverMainBill", Context.MODE_PRIVATE); if(sp != null && !sp.getString("selected", "").equals("") && isExit==false ){ selectedId = sp.getString("selected", ""); maccnt = sp.getString("accnt", ""); Bundle arguments = new Bundle(); arguments.putString(ModeDetailFragment.ARG_ITEM_ID, selectedId); if(selectedId.equals("systemset")){ Fragment1 fragment = new Fragment1(this); fragment.setArguments(arguments); getSupportFragmentManager().beginTransaction() .replace(R.id.mode_detail_container, fragment).commit(); }else if (selectedId.equals("systolist")){ Fragment2 fragment = new Fragment2(this); fragment.setArguments(arguments); getSupportFragmentManager().beginTransaction() .replace(R.id.mode_detail_container, fragment).commit(); } }else{ //这里显示默认的登录成功后,ListActivity显示的内容 }
相关推荐
Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat报错等等。 这就牵涉到一个问题:Intent 传递数据大小限制。 Intent到底能够携带多少数据呢? 使用Intent传送数据时...
android 多线程 数据传递 handle 源代码 可以通过handle更新ui,提高客户体验
Android开发中,在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起。它们各有利弊,有各自的应用场景。 我现在把它们集中到一个例子中展示,在例子中每一个按纽代表...
JavaScript调用Android方法,向Android方法传递json数据。
以不同方式实现了Activity之间的数据传递,并且当激活的activity在销毁时,主Activity可以得到返回的结果,适合初学者。
Android与webservice间数据传递所需类库,可参考我的博客中写的方法进行使用
Android activity间的数据传递,选择头像。Android activity间的数据传递,选择头像。
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
Android-Activity之间数据传递的多种方式. 在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起。它们各有利弊,有各自己的应用场景。
这是一个ppt文档,在里面详细的帮我们介绍了在Activity之间传递数据,通过全局变量传递数据。
Android Studio 3.0 下使用Intent传递数据和数据回传的示例。实现了一个简单的登录界面,用户输入用户名和密码后,点击登录把用户名和密码传递到主界面,主界面显示用户名和密码,然后在主界面中购买一个物品,打开...
Android界面跳转传递参数封装
Android PopupWindow与Activity之间的数据传递
android Intent传递对象数据 通过对象分别实现Serializable Parcelable接口的两种方法
基于SQLite3的Android手机数据恢复技术的研究_王随刚
在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...
一份可供学习的ndk开发示例 使用ndk r4b开发 主要示范如何从android java端传递数据结构以及从ndk接收数据结构 有相应教程: http://blog.csdn.net/hdw_191/archive/2011/02/16/6188852.aspx
4种最常用的Intent传递方式,这4种方式如下: 1、通过Intent传递数据 2、通过静态变量传递数据 3、通过剪切板传递数据 4、通过全局变量传递数据
android利用servlet服务端转发数据实现内网两个android设备通信
故意删除或者丢失,由于格式化SD卡的照片可以轻松恢复数据Android的恢复。它帮助恢复各种格式的图片,包括:JPG,JPEG,GIF,PNG,TIFF,PSD等 恢复从Android的视频和音频文件 影片你珍贵的回忆或很长一段时间收集的...