文章分类 - android
摘要:前言 很高兴遇见你~ 事件分发,android中一个老生常谈的话题了。前阵子去面试一家企业,他里面有一道笔试题问到事件分发的流程,正确答案是选择:Activity->window->view,基本的流程我们也都知道是从Activity开始分发。 当时我选择完之后,我就开始思考,那事件是怎么到达Act
阅读全文
摘要:Android中的内存泄漏:先说一下为什么会出现内存泄漏:Android程序开发中,如果一个对象已经不需要被使用了,本该被回收时,而这时另一个对象还在持有对该对象的引用,这样就会导致无法被GC回收,就会出现内存泄漏的情况。内存泄漏时Android程序中出现OOM问题的主要原因之一。所以我们在编写代码
阅读全文
摘要:1、单例模式引起的内存泄露 正确代码: 将 this.mContext = context改成:this.mContext = context.getApplicationContext();或者代码中用到的Context可以使用自己定义的MyApplication中的MyApplication.g
阅读全文
摘要:本文包括以下内容: 内存泄漏原理 Android内存泄漏发生的情况 检测内存泄漏的工具、方法 如何避免内存泄漏 更多Android面试相关请点击 四步准备Android面试 Android开发概要 大疆提前批第一次电面 大疆提前批第二次电面 大疆提前批终面 大疆提前批终面后加面 1. 内存泄漏原理
阅读全文
摘要:Java 中的内存分配简介 Java 中的内存分配 主要是分三块: 静态储存区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量。 栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存 堆区:通常存放 new 出来的对象。由 Java 垃圾回收器回收。
阅读全文
摘要:一、前期基础知识储备(1)什么是内存?JAVA是在JVM所虚拟出的内存环境中运行的,JVM的内存可分为三个区:堆(heap)、栈(stack)和方法区(method)。栈(stack):是简单的数据结构,但在计算机中使用广泛。栈最显著的特征是:LIFO(Last In, First Out, 后进先
阅读全文
摘要:1、引入库2、操作APP,分析结果3、如果是复杂的问题可以导出hprof文件到android studio 中继续分析官方地址: GitHub - square/leakcanary: A memory leak detection library for Android and Java. htt
阅读全文
摘要:本文主要内容出自《Android 开发艺术探索》,作为记录的同时加入个人的理解和思考,同时搜索其它资料和自己动手翻源码来理解实现原理。 问题: 如何高效加载 Bitmap? 解决这个问题的核心思路是根据图片需要显示的大小来缩放图片进行显示,缩放的方式为设置采样率。 LruCache 的原理? 下文有
阅读全文
摘要:关于图片的加载,现在已经有很多主流的框架,如Glide,Volley等帮我们快速实现。其实这其中都包含了图片高效加载的策略,缓存策略等。本篇文章主要介绍Bitmap是如何实现高效加载的? 一、为什么Bitmap需要高效加载? 现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制
阅读全文
摘要:最近接触Android,有很多不明白的地方,也走了很多弯路,现在将我今天走的弯路贴上来,也为了避免初学者也走这种弯路。 Android中Activity接收广播的方式是建一个内部类,该内部类继承BroadcastReceiver类,而Service端在完成一个耗时操作后,可以发送广播用来通知别的组件
阅读全文
摘要:java代码: ServiceActivity代码: package com.cwb; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; imp
阅读全文
摘要:广播的生命周期 BroadcastReceiver生命周期只有十秒左右,如果在onReceive()内做超过十秒的事情,就会报错。所以广播中不要执行耗时操作,可以考虑启动一个Service来完成操作。 广播的分类 根据注册方式,可以分为静态广播和动态广播。 静态广播 需要在AndroidManife
阅读全文
摘要:在日常开发的APP,大部分时候需要想用户展示图片信息,图片最终对应Android中的Bitmap对象。而对于APP端来说Bitmap又是一个比较麻烦的问题,主要表现在Bitmap是非常占用内存的对象,处理不当将导致APP运行卡顿甚至出现OOM。Google在其官方有针对Bitmap的使用专门写了一个
阅读全文
摘要:线程通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,但此时并没有运行,它需要CPU时间片。一旦得到CPU时间片,就会执行run()方法。run()的方法体称为线程体,它包含了要执行的这个线程的内容,run()方法运行结束,此线程也随即终止。线程状态转换一
阅读全文
摘要:如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的: mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(
阅读全文
摘要:lv.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Overrid
阅读全文