今天来阅读《Android开发艺术探索》

1、Activity生命周期和启动模式

问题1、架设当前Activity为A,如果这是用户打开一个新的ActivityB哪儿B的onResume和A的onPause哪个先执行呢?

答案是通过Android的源码可以了解到在启动一个新的Activity之前,需要先让旧的Activity执行onPause.所以需要旧的Activity先执行onPause然后新的Activity再执行onResume.

注意点:onSaveInstanceState和onRestoreInstanceState只有在Activity的生命周期内出现异常的情况下才会执行。

首先Activity被意外终止时,Activity会调用onSaveInstanceState去保存数据,然后Activity会委托Window去保存数据,接着Window再委托它上面的顶级容器去保存数据。

2、Android IPC

IPC是两个进程之间进行数据交换或者跨进程间通讯,一个进程包含多个线程,在主线程中包含过多的耗时操作会导致ANR(程序无响应),解决办法就是把耗时操作放置到线程中避免耗时操作在主线程中执行。IPC并不是Android独有的,所有的操作系统都有自己的IPC机制,在Android中最有特色的进程间通讯就是Binder,通过Binder可以听讼的实现进程间通讯,除了Binder之外Android孩纸吃Socket,通过socket也可以实现任意两个终端之间的通讯,当然同一个设备上的两个进程通过socket通讯自然也是可以的。通过ContentProvider,以及SQlite也可以实现进程间通讯。

Android多进程模式

通过给四大组件指定android:process属性就可以轻松的开启多进程模式

一个应用中使用多进程模式可能带来的问题如下:

1、静态成员和单例失效

2、线程同步机制失效

3、SharePreference可靠性下降

4、Application会多次创建

5、一个应用中使用多进程开发就相当于启动了多个应用,也相当于启动了多个虚拟机,所以占用内存增加

序列化和反序列化

Serializable是Java中的序列化接口,使用起来比较简单,但是开销比较大,序列化和反序列化需要大量的I/O操作。而Parcelable是Android中的序列化方式,因此更适合用在Android平台上,确定是使用起来稍微麻烦,但是效率高,Parcelable是Android推荐的方式,因此首选Parcelable。Parcelable主要用在内存序列化上,通过Parcelable将对象序列化到存储设备中或者将对象序列化后通过网络传输也都是可以的,但是这个过程略显复杂,因此在这两种情况下建议大家使用Serializable。

我的Android读书笔记——(1)相关推荐

  1. 第一行代码 Android读书笔记(二)

    第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...

  2. 大话企业级android读书笔记(一)

    Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备.目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方).Android操作系统最初由Andy Rubi ...

  3. android+读书笔记

    <android开发案例驱动教程> chat 2: 1. 按 Ctrl+F11 F12 可切换模拟器的横屏竖屏 chat 3: 1. 开发google map必须使用带有google ap ...

  4. Android读书笔记---View基础

    View篇(一) 什么是View? View是Android中所有控件的基类,不管是简单的button和TextView就还是复杂的RelativeLayout和ListView,他们都有共同的基类V ...

  5. Android 读书笔记

    <Android开发艺术探索> 一.Activity 的生命周期和启动模式 1. 当前 Activity 为 A,此时打开 Activity B:A.onPause() → B.onCre ...

  6. Android读书笔记(六) OkHttp(GET、POST)、解析XML(Pull、SAX)

    1.OkHttp的使用   使用OkHttp需要添加库到app/build.gradle文件中,如下: dependencies {compile 'com.squareup.okhttp3:okht ...

  7. Android读书笔记(一)

    1.存储用户临时数据onSaveInstanceState() 当Activity由于内存不足而被回收时,临时数据丢失,为了避免这种情况要使用onSaveInstanceState(). 保存数据(用 ...

  8. 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系

    本节和<Android群英传>中的第五章Scroll分析有关系,建议先阅读该章的总结 第3章 View的事件体系 3.1 View基本知识 (1)view的层次结构:ViewGroup也是 ...

  9. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

    Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...

最新文章

  1. 状态和面向对象编程——1.定位步骤
  2. 中国肠道大会 | 日程及嘉宾(4月16日更新)
  3. 利用Git Bash 远程访问服务器
  4. PLinq Lookup ParallelQuery
  5. 逆序数 UVALive 6508 Permutation Graphs
  6. 限制连接数上涨的几个关键因素
  7. PrimeFaces Mobile入门
  8. Visual Studio下使用jQuery的10个技巧
  9. PostgreSQL在何处处理 sql查询之六十三
  10. 谷歌登录com.google.andriod.gms.common.api.ApiException:10异常处理
  11. win10中安装step7 5.6
  12. firework、301重定向、二级域名、nofollow、网站伪静态化、TKD标签、robots、canonical标签
  13. python如何更新pip_[Python] 如何更新 PIP 到最新版本?
  14. 浏览器开启WebGL
  15. RFC1180 TCP/IP指南
  16. XCTF-攻防世界-密码学crypto-新手练习区-writeup
  17. mysql中exec语句,sqlserver 中EXEC和sp
  18. Android应用推广渠道分享
  19. React Hooks 详解
  20. 并行计算与集群技术(2)

热门文章

  1. web-HTML5-图片+超链接标签..
  2. 【Oracle SQL数据库-教学2】--- Oracle数据库基础
  3. 计算机检索常用中文数据库,常用文献信息数据库检索指南
  4. 怎么清理ug10注册表_最专业的软件卸载利器:不仅可卸载顽固软件,还能清理软件残留和注册表垃圾...
  5. 微信crm平台是什么系统?
  6. Nightmare2
  7. Codeforces Round #835 (Div. 4) - D. Challenging Valleys
  8. 【IPv6】NS,NA 报文学习
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1 (3)
  10. Java、Scala使用tan和arctan求斜率和倾斜角