Android知识库

来源:互联网 发布:服务器网站域名 编辑:程序博客网 时间:2024/05/29 04:12

1.如何保证Service不被杀死

参考博客:Android 进程保活招式大全

Android 进程不死从3个层面入手:
A.提供进程优先级,降低进程被杀死的概率
方法一:监控手机锁屏解锁事件,在屏幕锁屏时启动1个像素的 Activity,在用户解锁时将 Activity 销毁掉。
方法二:启动前台service。
方法三:提升service优先级:
在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = “1000”这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时适用于广播。
B. 在进程被杀死后,进行拉活
方法一:注册高频率广播接收器,唤起进程。如网络变化,解锁屏幕,开机等
方法二:双进程相互唤起。
方法三:依靠系统唤起。
方法四:onDestroy方法里重启service:service +broadcast 方式,就是当service走ondestory的时候,发送一个自定义的广播,当收到广播的时候,重新启动service;
C. 依靠第三方
根据终端不同,在小米手机(包括 MIUI)接入小米推送、华为手机接入华为推送;其他手机可以考虑接入腾讯信鸽或极光推送与小米推送做 A/B Test。

2.ButterKnife原理

对性能影响很小,因为没有使用反射,而是使用注解处理器,其原理是:
在编译阶段时,读入源代码,解析注解,然后生成新的源代码,新生成的源代码最后被编译成java字节码。
参考资料:
最新ButterKnife框架原理
Java Annotation 及几个常用开源项目注解原理简析
ButterKnife 简单原理实现

3.Activity和Fragment的生命周期

这里写图片描述

4.横竖屏切换时候Activity的生命周期

a.不设置Activity的android:configChanges时,切屏会重新走各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
b.设置Activity的android:configChanges=”orientation”时,切屏还是会调用各个生命周期,切换横竖屏只会执行一次
c.设置Activity的android:configChanges=”orientation |keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

5.

事件分发解析:http://blog.csdn.net/column/details/androideventdispatch.html
自定义控件解析:http://blog.csdn.net/column/details/androidcustomview.html
控件解析:http://blog.csdn.net/column/details/androidviews.html

0 0
原创粉丝点击