- 博客(28)
- 资源 (7)
- 收藏
- 关注
原创 Android系统中启动Activity的流程
(1)通过Binder进程间通信接入到ActivityManagerService进程中,并且将会调用ActivityManagerService.startActivity接口。(2)ActivityMangerService调用ActivityStack.startActivityMayWait,做好启动Activity前的准备。(3)ActivityStack通知Applicatio...
2019-12-04 09:50:19 281
原创 Android面试题(二)Android基础4
19、什么情况导致内存泄漏?资源释放问题:程序代码的问题,长期保持某些资源,如Context,Cursor,IO流的引用,资源得不到释放造成内存泄漏.对象内存过大:保存了多个耗用内存过大的对象,如 Bitmap,XML文件,造成内存超出限制。static关键字的使用问题static是java中的一个关键字,当用它修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用sta...
2019-11-25 17:06:05 939
原创 Android面试题(二)Android基础3
(三)常见的一些原理性问题1、Handler机制和底层实现上面一共出现了几种类,ActivityThread,Handler,MessageQueue,Looper,msg(Message),对这些类作简要介绍:ActivityThread:程序的启动入口,该类就是我们说的主线程,它对Looper进行操作的。Handler:字面意思是操控者,该类有比较重要的地方,就是通过...
2019-11-25 17:03:52 370
原创 Navigation组件的使用详解
Navigation 是 JetPack 中的一个组件,用于方便的实现页面的导航,所以抽象出了一个 destination 的概念,大部分情况一个 destination 就表示一个 Fragment,但是它同样可以指代 Activity、其它的导航图。最初要有个起始页面,叫 start destination,处于栈底,是启动时的第一个页面,当然也是返回可见的最后一个页面。...
2019-11-14 15:31:16 2199
原创 Android面试题(六)2网络与安全机制(1)
八、网络与安全机制6.1 网络框架对比volley:功能基于HttpUrlConnection;封装了UIL图片加载框架,支持图片加载;网络请求的排序、优先级处理缓存;多级别取消请求;Activity和生命周期的联动(Activity结束生命周期同时取消所有网络请求性能可拓展性好;可支持HttpClient、httpUrlConnection、和okhttp开发者使用封装...
2019-11-13 10:27:02 523
原创 Android面试题(六)2网络与安全机制(2)
加密算法介绍:URL编码 URL编码其实并非加解密算法,只是对特殊字符进行字符转义,从而方便在URL中传输参数。URL编码有两种方式,一种是狭义的URL编码,另一种是广义的URL编码。 狭义的URL编码指的是只对汉字进行编码,相关代码参见《Android开发笔记(六十三)HTTP访问的通信方式》。 广义的URL编码指的是除了汉字之外,还对其他特殊字符进行编码,如空格转换为“%20”,其他的“?...
2019-11-13 10:25:11 303 3
原创 Android面试题(六)-1常用算法/图片处理
六、常用算法1、快速排序把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。public class QuickSort {private static i...
2019-11-13 09:56:12 498
原创 Android面试题(七)设计模式
九、架构设计9.1 MVC模式MVC模式介绍:MVC是Model-View-Controller的简称Model:模型层,负责处理数据的加载或者存储View:视图层,负责界面数据的展示,与用户进行交互Controller:控制器层,负责逻辑业务的处理MVC模式的特点:1.耦合性低;2.可扩展性好;3.模块职责划分明确MVC模式的不足:XML...
2019-11-13 09:27:34 1163
原创 Android面试题(五)性能优化·1
五、性能优化根据用户的四个方面需求,总结如下:追求流畅,防止卡顿 追求稳定,防止闪退 追求续航,防止耗损 追求精简,防止臃肿常见性能检测工具:网易开源的Emmagee、腾讯开源的GT、科大讯飞的iTest、Google的开源Battery Historian、Android 自带 Lint 工具内存分析工具(1)Memory Monitor 工具: 它是And...
2019-11-12 10:39:17 278
原创 Android面试题(五)性能优·2
3.4.1)内存泄露简介即 ML (Memory Leak),指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象对应用程序的影响容易使得应用程序发生内存溢出,即 OOM内存溢出 简介:发生内存泄露的本质原因常见内存泄露原因 集合类 Static关键字修饰的成员变量 非静态内部类 / 匿名类 ...
2019-11-12 10:38:03 168
原创 Android面试题(四)设计模式
四、设计模式1、单例模式定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例使用场景确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源 某个类型的对象只应该有一个常见的实现方式饿汉单例模式public class Singleton {private static final Singleton singleton = new Si...
2019-11-12 10:31:18 265
原创 Android面试题(三)屏幕适配方案
三、屏幕适配方案一:为了高效的实现UI开发,出现了新的适配方案,我把它称作宽高限定符适配。简单说,就是穷举市面上所有的Android手机的宽高像素值:但是这个方案有一个致命的缺陷,那就是需要精准命中才能适配,比如1920x1080的手机就一定要找到1920x1080的限定符,否则就只能用统一的默认的dimens文件了。而使用默认的尺寸的话,UI就很可能变形,简单说,就是容错机制...
2019-11-12 10:22:00 439
原创 Android面试题(二)Android基础2
(二)Android源码相关分析1、Android动画框架实现原理RootView 只有一个孩子就是 DecorView,这里整个 View Tree 都是 DecorView 的子 View。在DecorView中,标题窗口(TitleBar)以下部分的 FrameLayout(Content容器)就是为了让程序员通过 setContentView 来设置用户需要的窗口内容。因...
2019-11-12 10:18:10 868
原创 Android面试题(二)Android基础1
二、Android基础(一)Android基础知识点1、四大组件是什么Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。2、Activity之间的通信方式常用的三种 Activity 之间的通信方式:使用 Intent/Bundle 类静态变量 全局变量3、横竖屏切换的...
2019-11-12 10:16:24 493
原创 Android工程师面试准备(一)第三部分
(四) 线程、多线程和线程池1、开启线程的三种方式?继承Threadpublic class java_thread extends Thread{public static void main(String args[]){(new java_thread()).run();System.out.println("main thread run ");}publ...
2019-11-12 09:45:02 179
原创 Android工程师面试准备(一)第二部分
3、Java的异常体系https://www.jianshu.com/p/49d2c3975c564、Java中实现多态的机制是什么?多态就是指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的...
2019-11-12 09:42:52 164
原创 Android工程师面试准备(一)第一部分
一、Java面试题(一) java基础面试知识点1、java中==和equals和hashCode的区别“==”: ==是运算符,用来比较两个值、两个对象的内存地址是否相等;“equals()”: equals是Object类的方法,默认情况下比较两个对象是否是同一个对象,内部实现是通过“==”来实现的。如果想比较两个对象的其他内容,则可以通过重写equals方法,...
2019-11-12 09:29:49 395
原创 Android优化
Android性能优化:一、性能检测工具(一)网易开源的Emmageehttps://github.com/NetEase/EmmageeEmmagee(机关枪)是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份...
2019-11-07 15:35:44 414
原创 Android 沉浸式状态栏完美解决方案
项目中经常需要状态栏沉浸式解决方案,网上很多解决方案的文章,现在总结一种实际项目中可行的方案:1、前期准备全局搜索你的代码里 是否有 android:fitsSystemWindow,如果有就删掉。检查你的values、values-v19、values-v21等 是否配置了如下item标签:// values-v19。v19 开始有 android:windowTransluce...
2019-11-07 15:33:13 1755
转载 Android进程保活
要点进程保活的关键点有两点:一是进程优先级的理解,优先级越高存活的概率越大;二是弄清楚哪些场景会导致进程会kill,然后采取下面的策略对各种场景进行优化。 提高进程的优先级 在进程被kill之后能够唤醒 进程优先级Android一般的进程优先级划分:1.前台进程 (Foreground process)2.可见进程 (Visible process)3.服务进程 ...
2019-06-20 13:43:02 410
原创 Android设计模式之适配器模式
适配器模式:将一个接口变成用户所需要的接口,如baseadapter可以适配listview和spinner,因为他们有相同的接口 被适配的类:public class Adaptee { public void request() { System.out.println("=====可以完成客户需要的功能"); }} 适配器:public ...
2018-10-15 17:09:53 242
原创 Android常用设计模式之命令模式
命令模式:调用对象与作用对象之间分离,由中间件来协调两者之间的工作,如控制器 public class Receiver { public void action() { System.out.println("=====Receiver.action" ); }} //调用者、发起者public class Invoke { private Co...
2018-10-15 17:08:53 182
原创 Android常用设计模式之代理模式
代理模式:自己的事交给别人去做,分别返回处理结果即可,如异步线程;通过代理,控制对对象的访问。可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。 静态代理 public interface Star { /** * 面谈 */ void confer(); /** * 签合同 */ ...
2018-10-15 17:07:34 140
原创 Android常用设计模式之观察者模式
观察者模式Observer:多个对象对一个对象进行监控,如缓存Subject:就是“被观察”的角色,它将所有观察者对象的引用保存在一个集合中。 Observer:是抽象的“观察”角色,它定义了一个更新接口,使得在被观察者状态发生改变时通知自己。 ConcreteObserver:具体的观察者。public interface Observer { void update(Subjec...
2018-10-15 17:06:22 188
原创 Android常用设计模式之工厂模式
工厂模式:实现创建者和调用者的分离简单工厂模式public interface Car { void run();}public class Audi implements Car{ @Override public void run() { System.out.println("=====奥迪run"); }} public class...
2018-10-15 17:03:24 137
原创 Android中常用设计模式之单例模式
单例模式:目的是为了让系统中只有一个调用对象,缺点是单例模式使其他程序过分依赖它,而且不同单例运行在不同进程中,使得维护困难饿汉式实现(单例对象立即加载)/** * 测试饿汉式单例模式,线程安全,调用效率高 * */public class SingletonDemo1 { private static SingletonDemo1 instance = new Sin...
2018-10-15 16:59:01 113
原创 Intent回传值
Intent回传值:启动一个Activity,当启动的Activity关闭时,传回值回到原Activity。以下一个小程序演示回传值。package com.itheima.smshelper;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a
2015-01-21 20:46:28 660 1
原创 Android如何实现多个Activity的界面皮肤更换
以下纯属个人观点仅供参考:基本思想:1. 把几套皮肤放在res/drawable目录里,然后用SharedPreferences来记录当前皮肤的资源id.然后在程序启动时加载Activity背景。 2. 主要的实现在皮肤管理器SkinManager类中. 将皮肤资源的ID加入集合中. 由该类同一调度皮肤更换,如初始化皮肤,获取当前皮肤符号以及具体的对应资源的更换皮肤. 3.要实现应用的皮肤更
2015-01-20 19:07:22 929
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人