需求:
由于应用连接硬件,显示硬件工作的实时状态。一个应用只有一个Activity的可能性应该不大,除非你的应用架构是Activity+Fragment。所以需要实现一个自定义的状态栏。其实和系统自带的状态栏类似。
大海捞针,都没有找到解决办法,可能大家没有遇到这样的需求或者本人使用搜索引擎的水平太弱。
实现原理:
- 定义状态栏的布局文件。
- 定义广播接收状态信息更新到界面。
实现思路:
思路1:
- 使用BaseActivity,将状态栏做成公共的布局文件,然后使用include包含进来。
- 所有应用的Activity都继承BaseActivity进行编写代码
- 在BaseActivity中定义状态栏项的广播接收者,进行接收状态的更新。
思路2:
- 定义一个StatusBarService,在应用启动时将此服务开启
- StatusBarService启动时使用WindowManager类将状态栏布局加载进来。
- 同思路1.3
思路3:
- 整个应用使用OneActivity+Fragment架构
- 将状态栏布局写在Activity中,Fragment负责实现应用本身的功能。
- 同思路1.3
综合以上思路应用采用“思路2”,所以下面只会写思路2的实现。原因有以下几点:
- 因为项目已经开展很久,已有很多Activity所以未采用“思路3”,修改代码量太大。
- “思路1”虽然可以实现需求,但是考虑效率问题,每次打开一个Activity都要去创建状态栏,注册状态栏信息更新的广播,又因为项目中状态信息更新频率在1Hz,所以也未采用此思路。