327学习笔记

横竖屏切换时候Activity的生命周期的总结

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
https://www.cnblogs.com/wjhblogs/p/4688918.html

ANR

1、 ANR的定义:

  • 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。
  • 一般说来,如果应用程序不能响应用户输入的话,系统会显示一个ANR。例如,一个应用程序阻塞在一些I/O操作上(通常是网络访问),这时,应用程序的主线程就不能再处理用户的输入事件。经过一定的时间后,系统认为应用程序已经挂起,并显示ANR来让用户选择杀死应用程序。

2、什么引发了ANR?

  • 在Android里,应用程序的响应性是由Activity Manager和
    Window Manager系统服务监视的。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:
    1、 没有响应输入的事件(如,按键按下,屏幕触摸)(5s)
    2、 BroadcastReceiver在10秒内没有执行完毕(10s)
    3、Service在规定的时间内无法处理完成(20s)

3、如何解决
将所有耗时操作,比如访问网络,Socket 通信,查询大量 SQL 语句,复杂逻辑计算等都放在子线程中去,然后通handler.sendMessage、runonUITread、AsyncTask 等方式更新 UI。无论如何都要确保用户界面操作的流畅度。如果耗时操作需要让用户等待,那么可以在界面上显示进度条。

如何调试ANR?

  1. DDMS输出的LOG可以判断ANR发生在哪个类,但无法确定在类中哪个位置
  2. 在/data/anr/traces.txt文件中保存了ANR发生时的代码调用栈,可以跟踪到发生ANR的所有代码段
  3. adb pull 来pull traces文件到电脑上

JAVA内存中数组是怎样存放的?

https://www.cnblogs.com/chenpi/p/5489732.html
https://www.cnblogs.com/lxp503238/p/7007126.html

Android中数据存储方式

1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
5 网络存储数据
https://www.cnblogs.com/pxsbest/p/5068482.html

在两个 Activity 之间传递对象还需要注意什么呢?

Intent 中的 Bundle 是使用 Binder 机制进行数据传送的。能使用的 Binder 的缓冲区是有大小限制的(有些手机是 2 M),而一个进程默认有 16 个 Binder 线程,所以一个线程能占用的缓冲区就更小了( 有人以前做过测试,大约一个线程可以占用 128 KB)。所以当你看到 The Binder transaction failed because it was too large 这类 TransactionTooLargeException 异常时,你应该知道怎么解决了。

序列化的作用,以及Android两种序列化的区别

序列化:对象 --> 字节流 反序列化:字节流–>对象
区别:
Serializable Java中序列化接口 IO读写存储在硬盘上 利于数据持久化 效率不高
Parcelable Android中序列化接口 效率高 在内存中读写 使用麻烦 (AS有相关插件 一键生成所需方法)
http://blog.qianlicao.cn/technology/2016/01/17/Parcelable2/
https://www.cnblogs.com/liushilin/p/7977424.html
https://www.cnblogs.com/leipDao/p/8022063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值