Android面试
文章平均质量分 90
Android面试总结
小山研磨代码
最强的男人要有迷离的眼神
展开
-
【Framework】透视Android中的Handler
准备对Framework层基于Android应用开发的内容进行学习回顾,学习一个新技术前我们一般都会灵魂三问:是什么、为什么、怎么用。源码的学习一定要亲自去看,用IDE或者Source Insight都没问题,如果看不懂就再看,多看,反复地看,相信我每看一次都有收获。尤其是Android中AMS这里,内容太多了,看资料和文档,要找到适合自己的方法论,了解总体流程,再去抠细节,一上来就看细节会淹死在代码里。AMS学习基于Handler、Binder、Activity…ActivityThread最终围绕着H.原创 2021-12-13 15:04:42 · 2654 阅读 · 2 评论 -
Java里的final关键字
final 是 Java 中一个常见关键字,表示的意思也很简单,就是“这个东西不能变”。许多程序设计语言都有自己的办法告诉编译器某个数据是“常数”。常数主要应用于下述两个方面:(1) 编译期常数,它永远不会改变(2) 在运行期初始化的一个值,不希望它发生变化对于编译期的常数,编译器(程序)可将常数值“封装”到需要的计算过程里。也就是说,计算可在编译期间提前执行,从而节省运行时的一些开销。在 Java 中,这些形式的常数必须属于基本数据类型( Primitives),而且要用 final 关键字原创 2021-12-09 18:10:29 · 705 阅读 · 0 评论 -
Android中Activity获取View宽高的常用方式
Android开发中,onCreate()、onStart()、onResume()关键生命周期方法中获取某控件的宽高,然而获取的结果均为 0,Why?Because:View的measure()与Activity的生命周期没有同步执行,因此不能保证在onCreate()、onStart()、onResume()中获取控件宽/高时,这个View已经测量结束,so,如果没有测量完成,我们取得的宽高就是0。Activity中测试代码,具体看注释即可:public class MainActivity ex原创 2021-11-30 00:10:18 · 2230 阅读 · 0 评论 -
Android中的RxJava
最近准备梳理一下Kotlin,先复习一遍RxJava思想,做个学习笔记+伪代码,整个脉络分为三个部分。(一)使用场景RxJava是重量级、最复杂的框架(没有之一),JakeWharton 的巅峰之作,操作符非常丰富、特别庞大,学关键的内容,学思维方式,看PPT资料,学两遍。为什么要学习RxJava?改变思维(Rx思维)来提升效率,响应式编程/异步事件流编程Rx思维:起点(分发事件)—>…—>终点(消费事件),中间不会断掉且可以做拦截,链条式思维学习资料源码:JakeWhar.原创 2021-10-03 18:13:28 · 747 阅读 · 0 评论 -
Android序列化(1)Serializable
概念说到Java,万物皆对象。对象,是一个比较抽象的概念,他就是类存活在内存中的一个实例,有状态和行为,一旦JVM停止运行,对象的状态也会随之丢失。那么如何将这个对象当前状态进行一个记录,使其可以进行存储和传输呢?这就要用到序列化了。序列化(Serialization)把对象转换为字节序列的过程称为对象的序列化,把对象的状态保持下来,写入到磁盘或者其他介质中。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列原创 2021-04-23 18:15:32 · 330 阅读 · 0 评论 -
Android页面跳转使用Intent 能传递数据大小的问题
抛出问题日常开发中我们经常用到的页面跳转传值,而在 Activity 间传递数据,就需要借助 Intent,可以传递基础类型数据或者可序列化的对象数据。平时传递少量数据的时候是没问题的,但是,当传递数据较大的时候会崩溃,就会触发 TransactionTooLargeException 异常。我们在这里先创建一个困难:Intent intent = new Intent(context, TestActivity.class);byte[] data = new byte[1024 * 1024];原创 2021-04-23 11:23:53 · 803 阅读 · 0 评论 -
AMS源码分析
转载来源:AMS源码分析(一)Activity生命周期管理AMS源码分析(二)onActivityResult执行过程AMS源码分析(三)AMS中Activity栈管理详解(一)Activity生命周期管理1. 前言AMS(ActivityManagerService)是Activity管理的核心组件,提供了Activity的启动、生命周期管理、栈管理等功能,熟悉AMS会对我们认识Activity的工作原理有很大的帮助。当前比较成熟的插件化技术,也是通过对Activity启动流程中的重要组件转载 2021-04-19 17:49:43 · 1241 阅读 · 0 评论 -
Java多态与泛型 ,动态绑定,静态绑定
(一)多态1.概念简单理解就是,一个对象可以表现出多种状态。可以看做是对抽象对象的逆过程,具体化抽象对象的行为。而它是如何实现这种表现出多种状态功能的呢。从Java语法上来讲有如下两种方式:1.1 使用继承:将父对象(更抽象的对象/或者说基类)设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。class Aninal{ void sound(发出声音);}//sound是动物的一个叫声方法class cat extend Anima原创 2021-04-19 11:49:26 · 1002 阅读 · 0 评论 -
Java源码分析之HashMap
本文基于Java 8HashMap使我们在开发过程中经常用到的数据结构,在面试过程中也会经常问到,本篇博文就基于JDK1.8具体分析一下HashMap的实现。首先看一下HashMap中的静态变量和一些类变量:// 默认最大容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// HashMap的最大容量static final int MAXIMUM_CAPACITY = 1 << 30;// 默转载 2021-04-16 19:03:57 · 138 阅读 · 2 评论 -
MVP 模式简单易懂的介绍方式
Android MVP 模式 1 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式。当项目越来越庞大、复杂,参与的研发人员越来越多的时候,MVP 模式 的优势就充分显示出来了。MVP 模式是 MVC 模式在 Android 上的一种变体,要介绍 MVP 就得先介绍 MVC。在 MVC 模式中,Activity 应该是属于 View 这一层。而实质上,它既承担了 View,同时也包含一些 Controller 的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把 Activity转载 2021-04-13 16:39:33 · 2892 阅读 · 0 评论 -
关于Java的多继承
文章目录一、为什么Java不支持多重继承?1.1 Java不支持多重继承1.2 为什么Java不支持多重继承?1.2.1 简单1.2.2 很少使用二、如何给女朋友解释为什么Java不支持多继承?2.1 继承2.2 多继承2.3 Java不支持多继承2.4 Java 8支持多继承三、实现多重继承3.1 接口3.2 内部类四、知乎帖子最近在学习NDK和JNI相关,讲到了C++多继承问题,想的Java是不支持多继承的,就顺带看看这些资料,做个记录。做股票软件,画K线图的时候看源码,又发现了他们定义的接口e转载 2021-03-20 12:41:24 · 629 阅读 · 1 评论 -
Android定时任务
1. TimerTimer 是 JDK 自带的定时任务执行类,可以直接使用 Timer 来实现定时任务。这种实现方式比较简单,可以指定首次执行的延迟时间、首次执行的具体日期时间,以及执行频率,能满足日常需要。Timer 是线程安全的,因为背后是单线程在执行所有任务。Timer 是基于绝对时间调度的,而不是基于相对时间,所以它对系统时间的改变非常敏感。1.1 它的使用代码如下:import java.util.Date;import java.util.Timer;import java.util.原创 2021-03-17 11:34:28 · 813 阅读 · 0 评论 -
Java/Android中ScheduledExecutorService定时器任务
ScheduledExecutorService是专门用来执行定时任务的一个线程池,使用如下:import java.util.Random;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/** * 测试定时任务 */public class Test { public s原创 2021-03-17 10:30:39 · 892 阅读 · 1 评论 -
Android大图片处理
移动设备对内存的要求还是很苛刻的,即便现在主流旗舰机动辄3G、4G的内存,但是对应于每个App分得的容量来说还是有限的,我们程序猿可以用各种手段来增大单个App的需求量,但是并不是完美的解决方案。最好是想办法来提高App的性能。图片来说更是OOM (OutOfMemoryError)的常见引发者,比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。原创 2016-10-13 11:49:52 · 7782 阅读 · 0 评论 -
关于Android内存优化
介绍在Android系统中,内存分配与释放分配在一定程度上会影响App性能的—鉴于其使用的是类似于Java的GC回收机制,因此系统会以消耗一定的效率为代价,进行垃圾回收。 在中国有句老话:”由俭入奢易,由奢返俭难”。而此谚语也似乎正适应于Android的内存使用。GC回收机制给程序员省去了像C语言程序员那样手动释放内存的工作,但是也带来了一系列的”雷”—动辄内存泄漏,再甚者稍微不慎就会OOM。 这篇原创 2016-10-13 14:26:27 · 859 阅读 · 0 评论 -
AsyncTask原理
为什么要用AsyncTask我们知道,Android应用的主线程(UI 线程,是线程不安全的,负责前台用户界面的绘制以及响应用户的操作)肩负着绘制用户界面和及时响应用户操作的重任,为了避免“用户点击按钮后没反应”这样的糟糕用户体验,我们就要确保主线程时刻保持着较高的响应性,主线程不能够运行需要占用大量CPU时间片的任务(如大量复杂的浮点运算,较大的磁盘IO操作,网络socket等)。为了做到这一点,原创 2016-10-14 15:48:10 · 1534 阅读 · 0 评论 -
Android(Java)中的单例
单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为,比如:全局信息配置。 【面试题】 单例模式的思想是什么?写一个代码体现。 (我们最好写懒汉式的单例模式给面试官,这个才是他想要的答案) 开发使用:恶汉式(是不会出问题的单例模式) 面试时写:懒汉式(可能会出现问题的单例模式) A. 懒汉式原创 2016-10-25 15:34:07 · 457 阅读 · 0 评论 -
Android面试题——Activity
记得2010年开始接触Android(Android 1.5),使用Eclipse开发,学完JDK5新特性之后,工作中其实用的是Java6,甚至身边都没有几个人用的是Android手机,当时HTC正火爆,一台便宜的G3都要三千左右的样子,对于刚毕业步入社会的童鞋来说绝对是奢侈品,开发全靠模拟器来做(苦逼脸)。一、初步认识学Android接触最早的就是Activity了,四大组件中相对来说也是使用最原创 2016-10-15 00:00:23 · 3118 阅读 · 2 评论 -
Android面试题——Service
==原创 2016-10-15 00:01:00 · 483 阅读 · 0 评论 -
Android面试题(Java基础为主)——比不同
Android面试题(Java基础为主)——比不同原创 2016-10-13 15:35:43 · 528 阅读 · 0 评论 -
Android内存泄露的原因
资源对象没关闭。 如Cursor、File等资源。他们会在finalize中关闭,但这样效率太低。容易造成内存泄露。 SQLiteCursor,当数据量大的时候容易泄露使用Adapter时,没有使用系统缓存的converView。即时调用recycle()释放不再使用的Bitmap。 适当降低Bitmap的采样率,如:BitmapFactory.Options options = newB原创 2016-10-13 15:52:06 · 522 阅读 · 0 评论 -
Java为什么把String设计成不可变的?
原文来自:Why String is immutable in Java? 在java里String类是不可变的,不可变类是一个不能被修改实例的类,实例创建时所有的信息都被初始化,并且不可被修改。这样的设计也有很多优点,本文从内存、同步和数据结构方面总结了为什么把String类设计成不可变的原因。1、字符串常量池的需要字符串常量池是一个特殊的存储区域。当创建字符串时,如果字符串已经存在于池中,则将返翻译 2017-09-26 17:21:07 · 764 阅读 · 0 评论 -
2017年严重拖延着患者欠下的债
扩展基础知识面Android 面试 | 全站式导航http://mp.weixin.qq.com/s/fTfudY1DBYS5JiSkPnbjAg100篇精选干货,感谢你与码个蛋共同成长(含5重福利)http://mp.weixin.qq.com/s/KSR1QFClkrap1ii3eTRSkQ《Android 开发工程师面试指南》 https://www.diycode.cc/wiki/andr原创 2017-11-02 23:44:05 · 22237 阅读 · 3 评论 -
Android中Listview的优化
说起Listview的优化,老生常谈啊,面试必问的一个点。我在筛选面试简历的时候,发现一个童鞋简历上写着ListView优化使用三级缓存?什么鬼?我孤陋寡闻了,哈哈,之前还真不知道,网上看了下零零散散,这方面的讲解并不是很详细,搜罗了几篇文章,我在这里做一下整合,回头好好研究一下,大家共同学习。首先Listview是需要和适配器配合使用的,常用的适配器有ArrayAdapter,SimplerAd原创 2016-10-13 10:14:40 · 782 阅读 · 0 评论