补充些刁钻的问题

动画的原理,底层如何给上层信号

动画分两种,补间动画和属性动画。

补间动画是通过不停地重绘视图实现的,只是改变了视图,而没有改变相关属性。补间动画通过不断调用invalidate()通知父容器,父容器来处理子控件的动画。

属性动画是通过差值器和估值器计算中间过程,不断地设置属性形成的动画。

Bitmap 使用时候注意什么?

避免加载bitmap过大内存造成oom

放置切图时需要注意放置的位置。避免大图放置在低分辨率下这样加载到内存中的大小会很恐怖的。

图片进行合适大小的缩放,避免加载过大图片。

在图片decode阶段,先获取其宽高然后进行判断是否符合我们预期的,否则进行一定比例的缩放。

在加载大图片时不要使用getResources().getDrawable()的方式去获取图片,因为这种方式也是将图片全部加载到内存的,大图很容易oom。

使用Options.inBitmap设置这个可以重用的bitmap的内存区域,不需要在重新给这个bitmap申请一块新的内存,避免了一次内存的分配和回收,从而改善了运行效率。

在不影响实际显示效果的情况下,图片尽量不使用ARGB_8888(颜色模式,四通道高精度(32位))

JNI

JNI(Java Native Interface)意为JAVA本地调用,它允许Java代码和其他语言写的代码进行交互,简单的说,一种在Java虚拟机控制下执行代码的标准机制。

NDK

Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作

String buffer 与string builder 的区别?

三者在执行速度方面的比较:StringBuilder > StringBuffer > String

String:使用最简单,(常量池的概念)

StringBuffer :线程安全的,方法都加了synchronized修饰。

StringBuilder :线程不安全,但是是最快的。

handler,在任何地方new handler 都是什么线程下

1.Handler的构造函数可以传入Looper,默认的使用当前线程的Looper,如果当前线程没有Looper,则会报错。MainLooper在程序启动,ActivityThread中就创建了。如果自己开辟线程,可以使用Looper.prepare()创建Looper,然后创建Handler就不会报错了。

2.Handler handler = new Handler(Looper.getMainLooper());这个不管在哪个线程中创建,handleMessage回调的都是主线程。

3.使用默认构造函数创建,当前在哪个线程,handleMessage回调就是在哪个线程。

强引用置为null,会不会被回收?

1.如果还存在其他引用,是不会回收的,例如内部类handler的引用。那样可能会造成内存溢出。

2.如果没有其他引用,也不会被立即回收,需要等到gc的时候才会被回收。

glide

Glide支持图片的二级缓存(并不是三级缓存,因为从网络加载并不属于缓存),即内存缓存和磁盘缓存。

内存缓存使用lru,从内存缓存中取出来之后,会使用一个WeakReference引用该资源。

生命周期控制:贴了一个fragment。

Glide 内存缓存如何控制大小?

Lru算法,设置最大使用内存大小。

为什么要有线程,而不是仅仅用进程?

进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。

谈谈你在工作中是怎样解决一个 bug

异常附近多打印 log 信息;

分析 log 日志,实在不行的话进行断点调试;

调试不出结果,上 Stack Overflow 贴上异常信息,请教大牛

再多看看代码,或者从源代码中查找相关信息

实在不行就 GG 了,找师傅来解决!

嵌入式操作系统内存管理有哪几种, 各有何特性

页式,段式,段页,用到了MMU,虚拟空间等技术

如何切换 fragement,不重新实例化

正确的切换方式是 add(),切换时 hide(),add()另一个 Fragment;再次切换时,只需 hide()当前,show()另一个。

这样就能做到多个 Fragment 切换不重新实例化

ListView 如何实现分页加载

设置 ListView 的滚动监听器:setOnScrollListener(new OnScrollListener{….})在监听器中有两个方法: 滚动状态发生变化的方法(onScrollStateChanged)和 listView 被滚动时调用的方法(onScroll)

在滚动状态发生改变的方法中,有三种状态:手指按下移动的状态: SCROLL_STATE_TOUCH_SCROLL:触摸滑动,惯性滚动(滑翔(flgin)状态): SCROLL_STATE_FLING: 滑翔,静止状态: SCROLL_STATE_IDLE: // 静止,对不同的状态进行处理:

分批加载数据,只关心静止状态:关心最后一个可见的条目,如果最后一个可见条目就是数据适配器(集合)里的最后一个,此时可加载更多的数据。在每次加载的时候,计算出滚动的数量,当滚动的数量大于等于总数量的时候,可以提示用户无更多数据了。

ListView 可以显示多种类型的条目吗

这个当然可以的,ListView 显示的每个条目都是通过 baseAdapter 的 getView(int position,View convertView, ViewGroup parent)来展示的,理论上我们完全可以让每个条目都是不同类型的view。

比如:从服务器拿回一个标识为 id=1,那么当 id=1 的时候,我们就加载类型一的条目,当 id=2的时候,加载类型二的条目。常见布局在资讯类客户端中可以经常看到。

除此之外 adapter 还提供了 getViewTypeCount()和 getItemViewType(int position)两个方法。在 getView 方法中我们可以根据不同的 viewtype 加载不同的布局文件。

ListView 如何定位到指定位置

可以通过 ListView 提供的 lv.setSelection(listView.getPosition())方法

Service 和 Activity 在同一个线程吗

默认情况下service与activity在同一个线程,都在main Thread,或者ui线程中。

如果在清单文件中指定service的process属性,那么service就在另一个进程中运行。

启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

通过主界面进入,就是设置默认启动的activity。在manifest.xml文件中配置

从另一个组件跳转到目标activity,需要通过intent进行跳转

Android数字签名

所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序

Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证

如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名。

数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

如何修改 Activity 进入和退出动画

可 以 通 过 两 种 方 式 , 一 是 通 过 定 义 Activity 的 主 题 , 二 是 通 过 覆 写 Activity 的overridePendingTransition 方法。

属性动画,例如一个 button 从 A 移动到 B 点,B 点还是可以响应点击事件,这个原理是什么?

补间动画只是显示的位置变动,View 的实际位置未改变,表现为 View 移动到其他地方,点击事件仍在原处才能响应。而属性动画控件移动后事件相应就在控件移动后本身进行处理

都使用过哪些自定义控件

pull2RefreshListView

LazyViewPager

SlidingMenu

SmoothProgressBar

自定义组合控件

ToggleButton

自定义Toast

开发中都使用过哪些框架、平台

EventBus(事件处理)

xUtils(网络、图片、ORM)

JPush(推送平台)

友盟(统计平台)

有米(优米)(广告平台)

百度地图

bmob(服务器平台、短信验证、邮箱验证、第三方支付)

阿里云 OSS(云存储)

ShareSDK(分享平台、第三方登录)

Gson(解析 json 数据框架)

imageLoader (图片处理框架)

zxing (二维码扫描)

anroid-asyn-http(网络通讯)

DiskLruCache(硬盘缓存框架)

Viatimo(多媒体播放框架)

universal-image-loader(图片缓存框架)

讯飞语音(语音识别)

andorid 应用第二次登录实现自动登录

前置条件是所有用户相关接口都走 https,非用户相关列表类数据走 http。

第一次登陆 getUserInfo 里带有一个长效 token,该长效 token 用来判断用户是否登陆和换取短 token 把长效 token 保存到 SharedPreferences 接口请求用长效 token 换取短token,短 token 服务端可以根据你的接口最后一次请求作为标示,超时时间为一天。所有接口都用短效 token 如果返回短效 token 失效,执行第3步,再直接当前接口 如果长效 token 失效(用户换设备或超过一月),提示用户登录。

即时通讯是是怎么做的?

使用asmark 开源框架实现的即时通讯功能.该框架基于开源的 XMPP 即时通信协议,采用 C/S 体系结构,通过 GPRS 无线网络用 TCP 协议连接到服务器,以架设开源的Openfn'e 服务器作为即时通讯平台。

客户端基于 Android 平台进行开发。负责初始化通信过程,进行即时通信时,由客户端负责向服务器发起创建连接请求。系统通过 GPRS 无线网络与 Internet 网络建立连接,通过服务器实现与Android 客户端的即时通信脚。

服务器端则采用 Openfire 作为服务器。 允许多个客户端同时登录并且并发的连接到一个服务器上。服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的通信就在该会话的上下文中进行。

怎样对 android 进行优化?

对 listview 的优化。对图片的优化。对内存的优化。

具体一些措施:尽量不要使用过多的静态类static

数据库使用完成后要记得关闭 cursor

广播使用完之后要注销

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,389评论 25 707
  • Java中的String类可以被继承么? 答:不能,因为它是一个final类,同样的还有Integer,Float...
    gyymz1993阅读 3,962评论 2 104
  • 著名艺人伊能静近日在微博上发出了一篇展望未来美好生活的长文,大多数网友都给予了热切而真诚的支持力挺点赞,然而也有一...
    90后作家罗毅祥阅读 338评论 0 1
  • 我不会华丽的词藻, 我唯有腐朽的身躯, 我唯有空洞的灵魂。 把空洞的灵魂放在腐朽的身躯, 试图找寻那一丝温暖, 温...
    晨星星阅读 432评论 2 2
  • 不经意选了本胡适的书《胡说》,没想到竟是本杂诗集。 好吧,那就随意翻翻。可这一翻不要紧,一下把我内心某些潜藏到即将...
    RobinEggs阅读 427评论 0 0