热点面试题
文章平均质量分 52
SickeyLee
努力学习,天天向上,最美的诗和远方!
展开
-
RecyclerView使用GridLayoutManager实现九宫格布局 item居中对齐问题
RecyclerView使用GridLayoutManager实现九宫格布局 item居中对齐问题原创 2022-07-07 13:01:24 · 1628 阅读 · 0 评论 -
Android8.0以后的的通知要指定channelId
Android8.0以后的的通知要指定channelId原创 2022-03-03 13:43:44 · 2946 阅读 · 0 评论 -
Fragment 面试题
一、如何在 Activity 中显示一个 Fragment: 答:使用下面的代码完成,传入布局中的 id 及 Fragment,这里需要需求注意,提交 Frament 有 2 种提交,commit 和 commitAllowingStateLoss,第一种是正常提交,第 二种是在提交过程中压制异常。 getSupportFragmentManager().beginTrans...原创 2020-04-17 00:09:45 · 456 阅读 · 0 评论 -
剑指offer---斐波那契数列
题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ 这样的一个数列被称为斐波那契数列 即第n项为...原创 2020-01-12 12:04:29 · 218 阅读 · 0 评论 -
Android系统的架构
屏幕快照 2016-09-07 上午9.26.57.pngandroid的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 1.应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程...原创 2020-01-12 12:03:53 · 240 阅读 · 0 评论 -
热布丁与动态加载(也叫插件化技术)
热布丁原因:因为一个dvm中存储方法id用的是short类型,导致dex中方法不能超过65536个原理:将编译好的class文件拆分打包成两个dex,绕过dex方法数量的限制以及安装时的检查,在运行时再动态加载第二个dex文件中。使用Dexclassloader。动态加载(也叫插件化技术)动态加载主要解决3个技术问题:1,使用ClassLoader加载类。2,资源访问。3,生命周期...原创 2020-01-11 20:02:06 · 160 阅读 · 0 评论 -
Android系统启动过程,App启动过程
Android系统启动过程,App启动过程]从桌面点击到activity启动的过程1.Launcher线程捕获onclick的点击事件,调用Launcher.startActivitySafely,进一步调用Launcher.startActivity,最后调用父类Activity的startActivity。2.Activity和ActivityManagerService交互,引入I...原创 2020-01-11 20:01:23 · 157 阅读 · 0 评论 -
性能优化
界面优化太多重叠的背景(overdraw)这个问题其实最容易解决,建议就是检查你在布局和代码中设置的背景,有些背景是隐藏在底下的,它永远不可能显示出来,这种没必要的背景一定要移除,因为它很可能会严重影响到app的性能。如果采用的是selector的背景,将normal状态的color设置为”@android:color/transparent”,也同样可以解决问题。太多重叠的View...原创 2020-01-11 20:00:22 · 120 阅读 · 0 评论 -
FC(Force Close)
FC(Force Close)什么时候会出现Error OOM,内存溢出 StackOverFlowError Runtime,比如说空指针异常解决的办法注意内存的使用和管理 使用Thread.UncaughtExceptionHandler接口...原创 2020-01-11 19:59:43 · 200 阅读 · 0 评论 -
AIDL的全称是什么?如何工作?能处理哪些类型的数据?
AIDL全称Android Interface Definition Language(Android接口描述语言)是一种接口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程跨界访问对象的目的.AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情:...原创 2020-01-11 19:59:00 · 1339 阅读 · 0 评论 -
启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?
启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?是因为启动程序(主界面也是一个app),发现了在这个程序中存在一个设置为<category android:name="android.intent.category.LAUNCHER" />的activity,所以这个launcher会把icon提出来,放在主界面上。当用户点击icon的...原创 2020-01-11 19:57:53 · 577 阅读 · 1 评论 -
ListView卡顿原因
ListView卡顿原因Adapter的getView方法里面convertView没有使用setTag和getTag方式;在getView方法里面ViewHolder初始化后的赋值或者是多个控件的显示状态和背景的显示没有优化好,抑或是里面含有复杂的计算和耗时操作;在getView方法里面 inflate的row 嵌套太深(布局过于复杂)或者是布局里面有大图片或者背景所致;Adapter多...原创 2020-01-11 19:56:41 · 194 阅读 · 0 评论 -
Handler机制
Handler机制andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。Handler: 你可以构造Handler对象来与Looper沟通,以便pu...原创 2020-01-11 19:55:48 · 77 阅读 · 0 评论 -
Android 如何让程序自动启动
如何让程序自动启动定义一个Braodcastreceiver,action为BOOT——COMPLETE,接受到广播后启动程序。原创 2020-01-11 19:54:18 · 408 阅读 · 0 评论 -
Android程序运行时权限与文件系统权限
Android程序运行时权限与文件系统权限1,Linux 文件系统权限。不同的用户对文件有不同的读写执行权限。在android系统中,system和应用程序是分开的,system里的数据是不可更改的。2,Android中有3种权限,进程权限UserID,签名,应用申明权限。每次安装时,系统根据包名为应用分配唯一的userID,不同的userID运行在不同的进程里,进程间的内存是独立的,不可以相...原创 2020-01-11 19:53:37 · 769 阅读 · 0 评论 -
传统的AOP(纵向继承)与SpringAOP(横向抽取机制)
传统的AOP(纵向继承)public class UserDaoImpl implements UserDao{ void save(User user){ checkPrivilege() //保存用户 } void checkP...原创 2020-01-10 22:43:48 · 664 阅读 · 0 评论 -
ANR排错
ANR排错1、ANR排错一般有三种情况KeyDispatchTimeout(5 seconds) –主要类型按键或触摸事件在特定时间内无响应 BroadcastTimeout(10 secends) –BroadcastReceiver在特定时间内无法处理完成 ServiceTimeout(20 secends) –小概率事件 Service在特定的时间内无法处理完成发生原因 主线程...原创 2020-01-10 15:46:38 · 178 阅读 · 0 评论 -
SurfaceView和View的最本质的区别
SurfaceView和View的最本质的区别SurfaceView是在一个新起的单独线程中可以重新绘制画面,而view必须在UI的主线程中更新画面。在UI的主线程中更新画面可能会引发问题,比如你更新的时间过长,那么你的主UI线程就会被你正在画的函数阻塞。那么将无法响应按键、触屏等消息。当使用SurfaceView由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问...原创 2020-01-10 15:46:05 · 258 阅读 · 0 评论 -
Android中Java和JavaScript交互
webView.addJavaScriptInterface(new Object(){xxx}, "xxx");1答案:可以使用WebView控件执行JavaScript脚本,并且可以在JavaScript中执行Java代码。要想让WebView控件执行JavaScript,需要调用WebSettings.setJavaScriptEnabled方法,代码如下:WebView we...原创 2020-01-10 15:44:37 · 94 阅读 · 0 评论 -
Scroller原理
Scroller原理Scroller执行流程里面的三个核心方法mScroller.startScroll()mScroller.computeScrollOffset()view.computeScroll()1、在mScroller.startScroll()中为滑动做了一些初始化准备,比如:起始坐标,滑动的距离和方向以及持续时间(有默认值),动画开始时间等。2、mScroll...原创 2020-01-10 15:43:52 · 167 阅读 · 0 评论 -
ART和Dalvik区别
ART和Dalvik区别art上应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是”空间换时间”。ART: Ahead of TimeDalvik: Just in Time什么是Dalvik:Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部...原创 2020-01-10 15:41:19 · 153 阅读 · 0 评论 -
Android 事件传递机制
事件传递机制 详解当手指触摸到屏幕时,系统就会调用相应View的onTouchEvent,并传入一系列的action。dispatchTouchEvent的执行顺序为:首先触发ACTIVITY的dispatchTouchEvent,然后触发ACTIVITY的onInterceptTouchEvent.然后触发LAYOUT的dispatchTouchEvent,然后触发LAYOUT的on...原创 2020-01-10 15:39:09 · 174 阅读 · 0 评论 -
自定义View的相关方法
自定义View的相关方法1.自定义属性2.onLayout(Viewgroup)3.onMesure4.onDraw5.交互:onIntercepterTouchEvent()onTouchEvent()原创 2020-01-10 15:37:09 · 141 阅读 · 1 评论 -
Spring的生命周期
第一步 : instantiate bean 对象实例化第二步 : populate properties 封装属性第三步: 如果bean 实现BeanNameAware 执行 setBeanName bean的id值第四步 : 如果bean 实现BeanFactoryAware或者ApplicationContextAware设置工厂setBeanFactory或者上下文对象...原创 2020-01-10 15:35:10 · 114 阅读 · 0 评论 -
Android怎么考虑数据的安全性
怎么考虑数据传输的安全性如果应用对传输的数据没有任何安全措施,攻击者设置的钓鱼网络中更改DNS服务器。这台服务器可以获取用户信息,或充当中间人与原服务器交换数据。在SSL/TLS通信中,客户端通过数字证书判断服务器是否可信,并采用证书的公钥与服务器进行加密通信。...原创 2020-01-09 12:35:32 · 394 阅读 · 0 评论 -
JVM 和Dalvik虚拟机的区别(最简单的详解)
JVM 和Dalvik虚拟机的区别JVM: .java -> javac -> .class -> jar -> .jar 架构: 堆和栈的架构. DVM: .java -> javac -> .class -> dx.bat -> .dex 架构: 寄存器(cpu上的一块高速缓存)...原创 2020-01-09 12:10:39 · 285 阅读 · 0 评论 -
Activity/Window/View三者的差别
Activity/Window/View三者的差别,fragment的特点Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutInflater像剪刀,Xml配置像窗花图纸。在Activity中调用attach,创建了一个Window创建的window是其子类PhoneWindow,在attach中创建PhoneWindow在A...原创 2020-01-09 12:09:23 · 334 阅读 · 0 评论 -
Android中的内存泄漏和内存溢出
引起内存泄漏的情况对于使用了BraodcastReceiver,ContentObserver,File,游标 Cursor,Stream,Bitmap等资源的使用,应该在Activity销毁时及时关闭或者注销。 静态内部类持有外部成员变量(或context):可以使用弱引用或使用ApplicationContext。 内部类持有外部类引用,异步任务中,持有外部成员变量。 集合中没用的对...原创 2020-01-09 12:08:29 · 210 阅读 · 0 评论 -
Android更新UI方式
更新UI方式Activity.runOnUiThread(Runnable)View.post(Runnable),View.postDelay(Runnable,long)HandlerAsyncTask原创 2020-01-09 12:07:21 · 106 阅读 · 0 评论 -
Android为每个应用程序分配的内存大小是多
Android为每个应用程序分配的内存大小是多少android程序内存一般限制在16M,也有的是24M原创 2020-01-09 12:06:53 · 1553 阅读 · 0 评论 -
Jar和Aar的区别
Jar和Aar的区别Jar包里面只有代码,aar里面不光有代码还包括代码还包括资源文件,比如 drawable 文件,xml 资源文件。对于一些不常变动的 Android Library,我们可以直接引用 aar,加快编译速度...原创 2020-01-09 12:06:21 · 860 阅读 · 0 评论 -
xml解析
android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别DOM解析优点:1.XML树在内存中完整存储,因此可以直接修改其数据和结构.2.可以通过该解析器随时访问XML树中的任何一个节点.3.DOM解析器的API在使用上也相对比较简单.缺点:如果XML文档体积比较大时,将文档读入内存是非常消耗系统资源的.使用场景:DOM 是用与平台和语言无关的方式表示 XML 文...原创 2020-01-09 12:05:16 · 174 阅读 · 0 评论 -
Json
JsonJSON的全程是JavaScript Object Notation,也就是JavaScript 对象表示法 JSON是存储和交换文本信息的语法,类似XML,但是比XML更小、更快,更易解析 JSON是轻量级的文本数据交换格式,独立于语言,具有自我描述性,更易理解对象可以包含多个名称/值对,比如:{"name":"zhangsan" , "age":25}使用谷歌的G...原创 2020-01-09 12:01:24 · 132 阅读 · 0 评论 -
Android各版本新特性
Android各版本新特性Android5.0新特性MaterialDesign设计风格支持多种设备 支持64位ART虚拟机Android6.0新特性大量漂亮流畅的动画支持快速充电的切换 支持文件夹拖拽应用 相机新增专业模式Android7.0新特性分屏多任务增强的Java8语言模式 夜间模式...原创 2020-01-09 11:57:53 · 355 阅读 · 0 评论 -
Context相关
Context相关Activity和Service以及Application的Context是不一样的,Activity继承自ContextThemeWraper.其他的继承自ContextWrapper.每一个Activity和Service以及Application的Context都是一个新的ContextImpl对象getApplication()用来获取Application实例的...原创 2020-01-08 19:23:20 · 98 阅读 · 0 评论 -
Android的数据存储形式
Android的数据存储形式SQLite:SQLite是一个轻量级的数据库,支持基本的SQL语法,是常被采用的一种数据存储方式。 Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的api SharedPreference: 以键值对的形势储存。其本质就是一个xml文件,常用于存储较简单的参数设置。 File: 即常说的文件(I/O)存储方法,常用...原创 2020-01-08 19:22:53 · 86 阅读 · 0 评论 -
动画
动画tween 补间动画。通过指定View的初末状态和变化时间、方式,对View的内容完成一系列的图形变换来实现动画效果。 Alpha, Scale ,Translate, Rotate。frame 帧动画 AnimationDrawable 控制 animation-list xml布局 PropertyAnimation 属性动画 3.0引入,属性动画核心思想是对值的变化。**...原创 2020-01-08 19:22:13 · 115 阅读 · 0 评论 -
Serializable和Parcelable
Serializable和Parcelable序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。Serializable(Java自带): Serializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。 Parcelable(android 专用): 除了Se...原创 2020-01-08 19:21:24 · 79 阅读 · 0 评论 -
android中进程的优先级?
android中进程的优先级?前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的 可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互 服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可...原创 2020-01-08 19:20:45 · 468 阅读 · 0 评论 -
Acitivty的任务栈
Acitivty的任务栈使用android:launchMode="standard|singleInstance|single Task|singleTop"来控制Acivity任务栈。任务栈是一种后进先出的结构。位于栈顶的Activity处于焦点状态,当按下back按钮的时候,栈内的Activity会一个一个的出栈,并且调用其onDestory()方法。如果栈内没有Activity,那...原创 2020-01-08 19:20:04 · 224 阅读 · 0 评论