分享记录Android学习回顾过程
基本组件
Activity
View
-
整体布局
-
AbsoluteLayout
-
ConstraintLayout
- 设备适配性强
-
LinearLayout
-
-
列表显示
-
ListView (过时)
- 原因:开发者需要对getChildView(), getGroupView()进行性能优化,否则ListView易出现卡顿
-
RecyclerView (推荐)
- 强制使用ViewHolder管理convertView内所有子组件以获得良好性能
-
-
进度条
- ProgressBar
-
拖动条
- SeekBar
- RatingBar
-
视图效果
-
ViewAnimator
-
添加动画效果
-
ViewFilpper
- 控制组件切换的动画效果
-
-
-
ViewSwitcher
-
切换视图
- ImageSwitcher
- TextSwitcher
-
-
-
系统状态栏通知
-
NotificationManager
- 通过Manager发送Notification
-
Channel (Android 8加入)
- 统一管理通知
-
Android 9开始,
-
- 在创建MessageStyle时应使用Person为参数,可设置更丰富的信息
- Message对象可使用setData()设置更多样的通知数据(如图片)
-
对话框
-
AlertDialog
- ProgressDialog
- DatePickerDialog
- TimePickerDialog
-
Service
BroadcastReceiver
ContentProvider
Intent & IntentFilter
Android事件机制
事件处理
-
基于监听的事件处理
-
为组件绑定特定的时间监听器(Listener)
- 应用场景:
没法基于回调的场景 =.= - 监听处理三对象:
- 应用场景:
-
- Event Source: 组件
- Event: 用户操作
- Event Listener: 监听事件源发生的事件并做出响应
-
基于回调的事件处理
-
覆写组件 / Activity的回调方法
- 应用场景:
处理具有通用性的事件 - 以View为例,其回调方法有:
onKeyDown(), onKeyLongPress(), onKeyShortCut(), onKeyUp(), onKeyTouchEvent(), onTrackballEvent()
- 应用场景:
-
响应系统设置的事件
-
Configuration类
- 获取系统的配置信息
量大、复杂数据处理
-
Handler消息传递机制
-
主要作用
- 在新启动的线程中发送消息
- 在主线程(UI线程)中获取、处理消息
-
Handler、Loop、MessageQueue
-
Message:
Handler接受和处理的消息对象 -
Looper:
每个线程只能拥有一个Looper,loop方法负责读取MessageQueue中的消息,读到消息后把消息发给Handler进行处理 -
MessageQueue:
消息队列,先进先出管理Message对象,程序创建Looper对象时,会在它的构造器中创建MessageQueue对象 -
Handler:
发送消息到指定的MessageQueue,即当前线程中必须有一个Looper对象管理MessageQueue- 保证线程中有Looper对象:
-
-
-
在主UI线程中,系统已经初始化了一个Looper对象
-
自己启动的子线程,比西创建Looper对象并调用它的prepare()方法, prepare()方法保证每个线程最多只有一个Looper对象
- Handler使用步骤:
-
调用Looper的prepare()方法创建Looper对象
-
创建Handler的实例,重写handleMessage()方法,该方法负责处理其他线程的消息
-
调用Looper的loop()方法启动Looper
简单数据处理
-
异步任务 AsyncTask
- 处理轻量级任务
- 相较于Handler更加消耗系统资源
Activity与Fragment
Activity
-
Activity启动
- 通过Intent启动Activity
- 通过Bundle在Activity之间交换数据
-
Activity回调机制
- 自由主题
UI线程阻塞超过20s会引发ANR (Application Not Responding)异常
解决思路:
减少UI线程的耗时操作,耗时的放到子线程运行
转载:https://blog.csdn.net/weixin_45356787/article/details/113718233