- 博客(7)
- 资源 (9)
- 收藏
- 关注
原创 launch mode 应用场景
标准模式 一调用startActivity()方法就会产生一个新的实例。 SingleTop:使用场景:浏览器的书签;通讯消息聊天界面。 如果已经有一个实例位于activity栈顶,就不产生新的实例,而只是调用activity中的newInstance()方法,如果不位于栈顶,会产生一个新的实例。 SingleTask:使用场景:某个Activity当做主界面的时候。 会在一个新的
2017-08-27 10:14:07 411
原创 ANR 定位和修正
可以通过查看/data/anr/traces.txt查看ANR信息。 根本原因是:主线程被卡了,导致应用在5秒时间未响应用户的输入事件。 很多种ANR错误出现的场景: 1) 主线程当中执行IO/网络操作,容易阻塞。 2) 主线程当中执行了耗时的计算。----自定义控件的时候onDraw方法里面经常这么做。 (同时聊一聊自定义控件的性能优化:在onDraw里面创建对象容易导致内存抖动---
2017-08-27 10:09:57 1809
原创 什么情况导致 oom
OOM产生的原因:内存不足,android系统为每一个应用程序都设置了一个硬性的条件:DalvikHeapSize最大阀值64M/48M/24M.如果你的应用程序内存占用接近这个阀值,此时如果再尝试内存分配的时候就会造成OOM。 1)内存泄露多了就容易导致OOM 2)大图的处理。压缩图片。平时开发就要注意对象的频繁创建和回收。 3)可以适当的检测:ActivityManager.getMem
2017-08-27 10:08:44 786
原创 什么导致线程阻塞
阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才恢复运行。或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException 1)线程执行了Thread.sleep(intmillsecond);方法,当前线程放弃CPU,睡眠一段时间,然后再恢复执行 2)线程执行一段同步代码,但是尚且无法获得相关的同步锁,只能进入阻塞状态
2017-08-27 10:07:37 7000 1
原创 string stringbuffer stringbuilder 区别
共同点:String StringBufferStringBuilder 都是字符串相关函数,StringBuffer StringBuilder都是AbstractStringBuilder的子类 不同点: String内容不可变,StringBufferStringBuilder内容可变 String与StringBuffer线程安全,StringBuilder非线程安全 如果程序不是
2017-08-27 10:06:51 773
原创 Java 中==和 equals 的区别, equals 和 hashCode 的区别
==操作符用来比较两个基本类型变量时,比较的是值;用来比较引用类型变量时,比较的是引用的地址 equals方法是基类Object的方法,用于比较两个对象的内容是否相同,Object类中equals方法的默认实现使用的==操作符比较,实际开发过程中,我们会重写equals方法,重新定义比较规则 当涉及到像HashMap等与哈希表结构相关的一些类时,会使用到hashCode方法 默认的ha
2017-08-27 10:06:06 209
原创 ArrayList LinkedList与HashMap 实现原理
ArrayList 定义 快速了解ArrayList究竟是什么的一个好方法就是看JDK源码中对ArrayList类的注释,大致翻译如下: /** * 实现了List的接口的可调整大小的数组。实现了所有可选列表操作,并且允许所有类型的元素, * 包括null。除了实现了List接口,这个类还提供了去动态改变内部用于存储集合元素的数组尺寸 * 的方法。(这个类与Vector类大致相
2017-08-27 10:04:51 3237
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人