
Android面试
Ueming
游戏sdk开发者
展开
-
Android基于开源项目搭建自己的技术堆栈
timber是JakeWharton开发的一个日志记录库,它的特点是可扩展框架,开发者可以方便便捷地集成不同类型的日志记录方式,例如打印日志到Logcat,打印到日志文件、打印日志到网络等,timber通过一行代码可以调用多种方式。jackson是java语言的一个流行JSON函数库,并没有为Android优化定制过,因此函数包中含有很多非必要的api,相比其他JSON函数库,用于Android平台会更显著的增大最终生成APK的体积。从较高的层次讲,一个APP的整体架构可以分为两层,即应用层和基础框架层。原创 2022-12-13 17:05:43 · 1589 阅读 · 0 评论 -
HandlerThread和IntentService简介
HandlerThread是一种具有消息循环机制的线程,它的内部可以使用Handler。IntentService内部采用HandlerThread来执行任务,当任务执行完毕后IntentService会自动退出。从任务执行角度来看,IntentService的作用很像一个后台线程,但是IntentService是一种服务,它不容易被系统杀死从而可以尽量保证任务的执行,而如果是一个后台线程,由于这个时候进程中没有活动的四大组件,那么这个进程的优先级就会非常低,很容被系统杀死,这就是IntentService原创 2022-12-06 17:38:26 · 908 阅读 · 0 评论 -
Android属性动画的工作原理
属性动画要求动画作用的对象提供该属性的set方法,属性动画根据你传递的该属性的初始值和最终值,以动画的效果多次去调用set方法。每次传递给set方法的值都不一样,确切来说是随着时间的推移,所传递的值越来越接近最终值。如果动画的时候没有传递初始值,那么还要提供get方法,因为系统要去获取属性的初始值。对于属性动画来说,其动画过程所做的就是这么多。原创 2022-11-28 21:53:19 · 1198 阅读 · 0 评论 -
Android点击事件的传递规则
4、某个view一旦开始处理事件,如果它不消耗ACTION_DOWN事件(onTouchEvent返回了false),那么同一事件序列中其他事件都不会再交给它来处理,并且事件将重新交给它的父元素处理,即父元素的onTouchEvent会被调用。5、如果View不消除ACTION_DOWN以外的其他事件,那么这个点击事件会消失,此时父元素的onTouchEvent并不会被调用,且当前View可以持续接收后续的事件,最终消失的点击事件会传递给Activity处理。6、ViewGroup默认不拦截任何事件。原创 2022-11-07 00:05:00 · 1841 阅读 · 0 评论 -
Android中IPC方式简介
ContentProvider是安卓中提供专门用于不同应用间进行数据共享的方式,它天生适合进程间的通信。Android是基于Linux,使得其并发读写文件可以没有限制的进行,甚至两个线程同时对一个文件进行写操作都是允许的。Messenger是以串行的方式处理客户端发来的消息,如果大量的消息同时发送到服务端,且需要并发处理,那么Messenger就不太合适了。Messenger是一种轻量级的IPC方案,它的底层实现是AIDL。共享文件也是一种不错的进程间通信方式,两个进程通过读写同一个文件来交换数据。原创 2022-11-02 17:58:07 · 993 阅读 · 0 评论 -
android中IPC机制简介
除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信也自然是可以的。什么是进程,进程和线程是截然不同的概念。按照操作系统中的描述,线程是cpu调度最小的单元,同时线程是一个有限的系统资源。IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程间进行数据交换的过程。最简单情况下,一个进程中可以只有一个线程,即主线程,安卓中为UI线程。原创 2022-10-25 15:27:39 · 1590 阅读 · 0 评论 -
Activity启动模式
这是一种单例模式,此模式下,只要栈中存在此Activity,那么多次启动此Activity都不会重复创建新实例,和singleTop一样,系统会回调其onNewIntent。当启动一个Activity后,系统首先会寻找栈中是否存在该Activity,存在,则把Activity调到栈顶,并回调onNewIntent方法。当Activity启动后,系统为其创建一个新的任务栈,然后Activity单独存在这个任务栈中,由于栈内复用的特性,后续请求均不会创建新的Activity,除非此任务栈被系统销毁。原创 2022-10-20 20:23:55 · 1896 阅读 · 0 评论 -
Activity生命周期
此时可以做一些数据存储、停止动画等操作,不能太耗时,因为会影响到新Activity的显示,onPause必须执行完毕,才会执行新Activity的onResume。(7)onDestroy:Activity即将被销毁,Activity最后一个生命周期回调,一般在这里做回收工作和资源释放。(3)onStart:Activity正在被启动,Activity可见状态,但还无法交互,Activity没显示在前台。(4)onResume:Activity可见,并且可以交互,Activity显示在前台。原创 2022-10-20 17:55:49 · 1737 阅读 · 0 评论 -
Android性能优化
如果不能再16ms秒内完成绘制,那么就会造成丢帧现象,即当前该重绘的帧被未完成的逻辑阻塞,例如一次绘制任务耗时20ms,那么在16ms系统发出的VSYNC信号就无法绘制,该帧就被丢弃,等待下次信号才开始绘制,导致16*2ms内都显示同一帧画面,这就是画面卡顿的原因。嵌套的布局会让View树的高度变得越来越高,因此在布局时,需要根据自身布局的特点来选择不同的Layout组件,从而避免通过某一种Layout组件来实现功能时的局限性,从而造成嵌套过多的情况发生。创建一个类的实例会消耗约15字节的内存。原创 2022-10-17 18:27:15 · 1204 阅读 · 0 评论 -
整理一下几道Android面试题
6、startService和bindService区别。2、Thread,HandlerThread是什么。3、Activity的启动模式。1、handler消息机制。5、屏幕适配,国际化。原创 2022-10-13 10:01:47 · 684 阅读 · 0 评论