android基础知识点

来源:互联网 发布:java自学视频推荐 编辑:程序博客网 时间:2024/06/14 01:27

Context启动Activity

通过Context启动的Activity要使用FLAG_ACTIVITY_NEW_TASK标记(如果不存在任务栈,就会重新创建一个。) 因为standard模式的Activity会默认进入它所从属的任务栈中,但是非Activity形式的Context并没有对应的任务栈。


导出anr日志

1.查看是否有日志:adb shell ls /data/anr/
2.导出相应的日志文件到电脑中: adb pull /data/anr/traces.txt d:/anr.txt


appcompat_v7

  • appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本的界面.
  • 我们建项目时直接把最小SDK选在Android4.0以上不就不需要这个支持库

什么是线程安全

  • 多线程访问同一个代码,不会产生不确定的结果。

往往可以通过synchronized加锁保证线程安全。

参考链接:java synchronized详解


序列化

  • 有两种序列化的方式:Serializable和Parcelable(Android独有)。在内存的序列化上,建议使用Parcelable。但是在对象存储和网络传输的时候,建议使用Serializable
  • 序列化是把对象转换为字节序列。反序列化则反之。
  • (Serializable)最好显示指定UID(自动生成的会收到类名称、接口名称、以及成员名称的影响,可能会发生改变。就会抛出InvalidClassException异常)。如果对类进行了不兼容性修改的时候,需要修改UID

RecyclerView使用

  • 相比ListView和GridView来说,更加方便使用。(轻松item、网格、瀑布流等)
  • 可以定义很多动画

使用:此控件需要引入v7jar包。地址:https://pan.baidu.com/s/1mhJ0w5q


android图片格式

webp格式
  • 谷歌开发的旨在加快图片加载速度的格式。图片压缩面积只有jpeg的2/3。可以节省- 大量的服务器带宽资源和数据空间。
  • 但是是有损压缩。比较编码的jpeg格式,编码同样质量的WebP格式需要更多的计算机资源。
JPEG格式
  • 一般大小有几十K
  • 颜色更丰富,更饱和
  • 使用建议:不需要保存图片的透明背景,需要保存图片质量,色彩以及饱和度。
PNG
  • 一般大小有几百K
  • 颜色没有那么丰富
  • 使用建议:需要透明,
GIF

如何返回三方应用

注意是返回,而不是重启三方应用
  • 最重要的就是获取第三方应用的上下文
  • 根据上下文找到启动此app的intent

参考链接:https://www.zhihu.com/question/30153342


启动模式

  • Standard:标准模式,每次都会新建一个实例。
  • SingleTop : 需要创建的实例是否在栈顶,如果是,那么就无需创建新的实例。否则新建
  • SingleTask:需要创建的实例在栈中是否存在。如果存在,就置顶。另外会把此实例以上的全部移除。
  • SingleInstance : 会在新的任务中创建。但是通过此实例,再次创建的实例,还是会回到以前的任务中。

事件传递

  • 有3个方法,dispatchTouchEvent、onTouchEvent、onInterceptTouchEvent(容器专属)
  • 事件先执行dispatchTouchEvent(Activity->ViewGroup1->ViewGroup2->View)
  • 然后执行onTouchEvent(View->ViewGroup2->ViewGroup1->Activity)
  • 如果每个方法都是return fasle,就按照上面顺序往下分发
Activity
  • dispatchKeyEvent,不管是return true还是return false,onKeyDown和OnKeyUp方法都不会再执行。实际测试,发现Activity中的onInterceptTouchEvent没有执行(为什么???)
  • onTouchEvent:整个事件流程的最后执行
ViewGroup
  • 返回 true、false、super.执行流程是不一样的
  • dispatchTouchEvent:1、return super.不执行onInterceptTouchEvent。2、return false执行onInterceptTouchEvent方法。3.return true,会执行上一个容器orActivity的onTouchEvent方法(不执行自己的)
  • onInterceptTouchEvent:return false,顺序往下执行。如果return true,表示拦截成功,直接执行本容器的onTouchEvent事件。如果想直接执行此控件的onTouchEvent方法,必须通过此方法
  • onTouchEvent:返回supe 和返回false的的含义是一样的,都是事件继续往上分发
控件
  • 监控控件的点击事件也会终止事件往下下发
  • dispatchTouchEvent:return true会终止下发(不会执行onTouchEvent,而且监听里面的方法不会执行)。
  • onTouchEvent:return true(监听事件中的回调不会执行)
ACTION_MOVE、ACTION_UP总结
  • ACTION_DOWN事件在哪个控件消费了(return true),那么ACTION_MOVE和ACTION_UP就会从上往下(通过dispatchTouchEvent)做事件分发往下传,就只会传到这个控件,不会继续往下传
  • 如果ACTION_DOWN事件是在dispatchTouchEvent消费,那么事件到此为止停止传递
  • 如果ACTION_DOWN事件是在onTouchEvent消费的,那么会把ACTION_MOVE或ACTION_UP事件传给该控件的onTouchEvent处理并结束传递。

Android进程分类

  • 前台进程-跟用户正在交互的Activity或者Activity用到的service等。内存不足时最后被杀死的
  • 可见进程-可以是出于暂停状态的Activity或者绑定在其上面的service,即使被用户可见,但是因为失去了焦点,不能与用户交互—例如widget、输入法等
  • 服务进程-使用startService启动的进程,不被用户可见,但是却是用户关系的。
  • 后台进程-执行onStop方法停止的进程,不是用户当前关系的。比如QQ。一旦没有了内存首先被杀死。
  • 空进程-不包含任何应用程序组件的进程,这种进程,一般是不让他存在的。

Dalvik

  • Dalvik虚拟机每次都会将高级语言->机器语言
  • Dalvik为谷歌公司自己设计的用户android平台的java虚拟机
  • Dalvid虚拟机是谷歌等厂商开发android移动设备平台的核心组件之一
  • 它可以支持.dex格式的java应用程序运行—.dex是专门为Dalvik应用设计的一种压缩方式(适合内存or处理器有限的系统)
  • Dalvik经过优化,允许在有限的内存中运行多个虚拟机的实例(每个Dalvik应用作为独立的Linux进行执行)—可以防止在虚拟机崩溃的时候所有程序都关闭

ART运行时

  • 安卓团队开始将精力投入到底层的一些组件,其中之一就是应用程序的运行时
  • 更快、更高效率、更省电的ART运行时
  • 应用安装的时候,预编译字节码到机器语言(AOT编译)。 在移除解释代码这一过程后,应用程序执行将更有效率、启动更快。
Art的优点:
  • 启动快、运行快,体验好,触感反应更及时
  • 续航能力更强
  • 支持更低的硬件
  • 系统性能显著提升
缺点:
  • 占用更多的存储空间
  • 应用安装时间长

0 0