一、消灭全局变量

  在内存不足时,系统会回收一部分闲置的资源,由于App被切换到后台,所以之前存放的全局变量很容易被回收,这时再切换到前台继续使用,会报空指针崩溃。想彻底解决这个问题,就要使用序列化。

  1.把数据作为intent的参数传递

  使用intent进行页面间数据的传递,即使activity被摧毁,intent上的数据依然存在,所以intent是保存数据的好地方,比本地文件靠谱。

  但是intent能传递的数据类型也必须支持序列化,像JSONObject这样的数据类型,是传不过去的。

  intent上携带的数据量过大,也会发生崩溃。

  2.把全局变量序列化到本地

  我们在每次修改全局变量时,都要把值序列化到本地文件中,我们再次使用全局变量时,如果为空,就从本地文件中再反序列化到内存中。这不是长远之计。

  序列化的缺点:①每次设置全局变量的值都要强制执行一次序列化的操作,容易造成ANR。

  ②序列化生成的文件,会因为内存不够而丢失。

二、App数据缓存设计

  App缓存只能针对GET类型的接口,对POST不适用。因为GET是获取数据,而POST是修改数据。

  可以添加一个强制更新按钮,暴露一个boolean类型的参数,用于判断是否遵循APP端缓存策略,如果是将缓存时间设置为0这样就不会执行缓存策略了。

三、MockService(自己编写数据)

  

四、用户登录场景

  贯穿App的,应该有一个User全局变量,在每次登陆成功后,会将isLogin属性设置为true,在退出登录后,则将该属性设置为false。这个User全局变量要支持序列化到本地,这样数据才不会因为内存回收而丢失。

  

APP研发录笔记的更多相关文章

  1. 《App研发录》知识点汇总

    原文链接:http://www.jianshu.com/p/fc8c4638937e <App研发录>这部书是包建强写的,说来也巧,在读这边书之前在看池建强的<Mac 人生元编程&g ...

  2. 《app研发录》第一章 重构,夜未眠笔记

    1.1 重新规划android的项目结构     重新规划android的目录结构分两步: 1.建立AndroidLib类库,将与业务无关的逻辑转移到AndroidLib. acitivity存放的是 ...

  3. 《App研发录》面世

    古者富贵而名灭,不可胜记,唯倜傥非常之人称焉.故西伯拘而演<周易>,屈原放逐,乃赋<离骚>.文人雅士一次次的谱写着千古绝唱,而我亦不能免俗,也要附庸风雅,写一部前不见古人.后不 ...

  4. 《App研发录》 源码

    第1章源码: 1.1 重新规划Android项目结构 1.1.zip 1.2 为Activity定义新的生命周期 1.2.zip 1.3 统一事件编程模型 1.3.zip 1.4 实体化编程 1.4. ...

  5. 【Android】《App研发录》总结

    说明 看这本书的时候,总感觉怪怪的. 因为在地铁上看完的,作者书中基本都是他自己工作中遇到的问题和坑,虽说这样会让人感觉找到了解决方案,可以再进行深入的研究,可是某些地方介绍的有点片面,仅仅是引用部分 ...

  6. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  7. [APP] Android 开发笔记 003-使用Ant Release 打包与keystore加密说明

    接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genk ...

  8. [APP] Android 开发笔记 002-命令行创建默认项目结构说明

    接上节:[APP] Android 开发笔记 001 4. 默认项目结构说明: 这里我使用Sublime Text 进行加载.

  9. iOS App 研发的最后冲刺:内测与部署

    当开发者历经磨难.披荆斩棘,完成了一个iOS项目后,最后的临门一脚就是应用的内测.部署.那么,在这最后的射门动作中,都有哪些地方需要开发者注意?有哪些方式能够更好地帮助我们进行iOS应用的发布部署? ...

随机推荐

  1. CF666E Forensic Examination [后缀自动机,线段树合并]

    洛谷 Codeforces 思路 最初的想法:后缀数组+区间众数,似乎并不能过. 既然后缀数组不行,那就按照套路建出广义SAM,然后把\(S\)放在上面跑,得到以每个点结尾会到SAM上哪个节点. 询问 ...

  2. MyOD(课下作业,选做)

    MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  3. 总结fiddle

    fiddler重新发送请求   模拟限速 http://caibaojian.com/fiddler.html fiddler模拟限速的原理 我们可以通过fiddler来模拟限速,因为fiddler本 ...

  4. Windbg分析蓝屏Dump文件

    一.WinDbg是什么?它能做什么? WinDbg是在windows平台下,强大的用户态和内核态调试工具.它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏.程序崩溃(IE崩溃)原因,是我们日常 ...

  5. webpack打包优化之外部扩展externals的实际应用

    目录 前言 externals定义 用法 string array object function regex 实际案例 打包时间 打包之后包的大小 浏览器加载 需要注意 参考 前言 使用vue-cl ...

  6. [FJWC2018]全排列

    题解: 考虑长度为k的时候的贡献 即取出一些元素然后给他们排个顺序然后问你有多少排法 假设排法为ans 那么应该就是$C(n,k)*C(n,k)*(n-k)!*(n-k)!*(n-k+1)*ans$ ...

  7. shell中使用带密码的方式直接pg_dump和psql

    数据导出 pg_dump "host=XX.XX.XX.XX port=5432 user=XXXX password=XXXX dbname=XXXXX" -t table_na ...

  8. 安卓获取签名SHA1

    Debug签名:D:\Java\jdk1.8.0_151\bin>keytool -list -v -keystore debug.keystore  无需密码 Relese签名:D:\Java ...

  9. IIS+Tomcat功能iis端口2

    之前写过IIS桥接Tomcat是通过isapi_redirect.dll,组件方式实现共用端口的,但是在Windows2012服务器 iis8.0版本中,配置完成后没有效果,比较抓狂,分析发现如下信息 ...

  10. js中的传值和传引用,判断两个数组是否相等

    所谓js的中的传值,其实也就是说5种基本数据类型(null,undefind,boolean,number,string) 传引用也就是说的那个引用数据类型,(array和objec) 基本数据类型的 ...