收藏文章

其他网站文章

1.泡在网上的日子
-. Android 启动模式详解

概要

SingleTask

  • taskAffinity="taskName" 无此属性则默认包名,开启新Task的条件 launchMode="singleTask"&&taskAffinity="different"
  • taskAffinity相同的Task会启用CLEAR_TOP
if( 发现一个 Task 的 affinity == Activity 的 affinity ){
    if(此 Activity 的实例已经在这个 Task 中){
        这个 Activity 启动并且清除顶部的 Acitivity ,通过标识 CLEAR_TOP 
    } else {
        在这个 Task 中新建这个 Activity 实例
    }
} else { // Task 的 affinity 属性值与 Activity 不一样
    新建一个 affinity 属性值与之相等的 Task
    新建一个 Activity 的实例并且将其放入这个 Task 之中
}

SingleInstance
必须独占一个Task

-. Android架构心得

2.Android Weekly

  1. Android内存泄漏分析
  • 内存泄露检测方案SNGAPM
  • 常见内存泄露案列
    1. 单例模式 (Solution:1.泄露的属性改为弱引用 2.如果传入Context,如果可以用ApplicationContext替代)
    2. InnerClass匿名内部类:非静态内部类和匿名类都会潜在引用外部类,如果内部类做耗时操作会导致外部类不被回收(Solution:1.将内部类改为静态 2.如果强引用外部类的变量,则将该变量改为弱引用 3.在外部类要被回收前,结束耗时任务)
    3. Activity Context:加static修饰后,导致Activity无法回收(Solution:1. 能使用ApplicationContext替代就替代 2.慎重使用static修饰Context,在onDestroy内暂停线程)
    4. Handler 引起的内存泄露:延迟任务持有外部对象,会导致外部任务无法释放(Solution;1.将Handler单独放在类文件中或者使用静态内部类 2.如果要在Handler内部调用Activity,使用弱引用,使用static+weakReference)
    5. 注册监听器的泄露:当获取系统服务,想要内部时间被通知,需要将自己注册到服务的监听中,这回让服务持有Activity的引用,如果在onDestroy时没释放就泄露(Solution1. ApplicationContext替代ActivityContext 2.在onDestroy的时候反注册)
    6. Cursor,Stream没有close,View没有recycle(Solution:在合适的时候第哦啊用相应的函数)
    7. 集合中对象没清理(Solution:在退出Activity前,清理集合)
    8. WebView泄露(及时调用onDestroy)
    9. 构造Adapter的时候,没有使用其复用原则
  1. Android性能监控实现原理

3.Aop无埋点监测
aspectj语法

3.CSDN
-. Context区别

收藏文章_第1张图片
Paste_Image.png

你可能感兴趣的:(收藏文章)