学习日志10.17

 

10.17

 systemui其实结构是比较复杂,里面管理各种服务,导航栏,状态栏,近期列表,下拉菜单,关机界面等,其中以导航栏和状态栏,近期列表用的比较多,也是本博文会重点讲解的内容。从结构上来讲下拉菜单和状态栏都是属于statusbar,结构树上也是属于顶层的super_status_bar.xml

顶层树是super_status_bar,之后会走两个分支status_bar_container和status_bar_expanded,

  • status_bar_container这个分支主要呈现的是状态栏界面,状态栏细分左边和右边,左边是通知栏,右边是系统功能的状态图标显示,
  • status_bar_expanded这个分支主要呈现的下拉菜单界面,其实下拉菜单中又分快捷图标和短信通知栏,


原文链接:https://blog.csdn.net/Bill_xiao/article/details/108244267

Android中的Bn端和Bp端类似服务端和客户端

相信就不会对Binder架构中代表Client的Bp端及代表Server的Bn端感到陌生。Java层中Binder实际上也是一个C/S架构,并且其在类的命名上尽量保持与Native层一致。

《深入理解Android 卷III》第二章 深入理解Java Binder和MessageQueue - gccbuaa - 博客园

在方法内创建了一个字符数组names,读取res/values/config.xml文件中定义的数组config_systemUIServiceComponents里面包含了各种SystemUI的各个组件和服务类的完整路径,之后通过循环和反射调用各个组件的start方法,并将它们放入一个SystemUI数组管理;

Java子类是否要实现父类中所有的抽象方法

java中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗

简单总结,需要重写的有:

普通类继承抽象类,重写所有抽象类方法;(不包括普通方法)

普通类继承接口,重写所有接口方法。(不包括default关键字修饰的方法)

详解见下:

1. 普通类继承,并非一定要重写父类方法。

2. 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。

3. 接口类继承。如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。

不一定,关键要看子类是否是抽象类。

    如果子类是非抽象类,则必须实现接口中的所有方法;  

    如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!


简单总结:

  • 如果是抽象子类可以不实现或重写父类的所有抽象方法、接口。
  • 不是抽象的就要实现全部抽象方法或接口。

Android SystemUI(二):启动流程和初始化 - 腾讯云开发者社区-腾讯云

systemui的常用组件主要有

  1. StatusBar:通知消息提示和状态展现
  2. NavigationBar:导航栏 返回,HOME,Recent
  3. KeyGuard:锁屏模块可以看做单独的应用,提供基本的手机个人隐私保护
  4. Recents:近期应用管理,以堆叠栈的形式展现。
  5. Notification Panel:通知栏 展示系统或应用通知内容。提供快速系统设置开关。
  6. VolumeUI:来用展示或控制音量的变化:媒体音量、铃声音量与闹钟音量
  7. 截屏界面:长按电源键+音量下键后截屏,用以展示截取的屏幕照片/内容
  8. PowerUI:主要处理和Power相关的事件,比如省电模式切换、电池电量变化和开关屏事件等。
  9. RingtonePlayer:铃声播放
  10. StackDivider:控制管理分屏
  11. PipUI:提供对于画中画模式的管理

启动流程

启动流程主要包括两个部分

•在 framework 中启动 SystemUIService•在 SystemUIService 中启动 SystemUI 所需的各种组件

framework 中的流程

SystemUI 是系统应用,所以它也是一个 APK,有入口 Application,只不过它是由 SystemServer 进程进行启动的。

  • SystemUI 服务的启动就是在 startOtherServices() 里面
  • (SystemServer的代码对系统服务类别大体分为三类:Bootstrap->Core->Other,SystemUI的启动就在Other中)。
  • 在startOtherServices()中,通过调用AMS的systemReady()方法通知AMS准备就绪。systemReady()拥有一个名为goingCallback的Runnable实例作为参数,So,当AMS完成对systemReady()的处理后将会回调这一Runnable的run()方法。
  • 对于Android系统来说,当一个应用启动,系统会保证其Application类是第一个被实例化的类,并且Application的onCreate方法,一定先于应用中所有的Activity,Service和BroadcastReceiver的创建。
  • SystemUI 的启动流程:最终通过调用各自service组件的start方法,有序完成所有组件的初始化。SystemBars的start方法,通过读取strings中配置的类名,初始化对应的StatusBar组件。

SystemUI中,SystemUIApplication就是第一个被实例化的类。

在其中,定义了两组服务:

  • 一类是所有用户共用的SystemUI服务,例如:Status Bar
  • 一类是每个用户独有的服务
  • SystemUI抽取了功能模块的共性形成抽象类SystemUI.class,上图中所有列出的类型,均是SystemUI的子类实现。
  • systemui app启动时序图
  • 上图流程走完就是各模块单独的初始化逻辑了
  • SystemBars主要包含了NavigationBar和StatusBar

要说status_bar.xml,不得不提的则是super_status_bar.xml。这个layout,一看名字就很super。它是整个status bar的 root 布局。它的加载流程如下:

StatusBar.java

-> start

-> createAndAddWindows

-> addStatusBarWindow

-> makeStatusBarView

-> inflateStatusBarWindow

inflateStatusBarWindow方法中有一句mStatusBarWindow = View.inflate(context,R.layout.super_status_bar,null);

变量mStatusBarWindow与其对应。它是一个StatusBarWindowView类,继承FrameLayout,负责整体框架上的排版和绘制,部分事件的监听及分发。super_status_bar.xml的布局主要包含如下:

 在onViewCreated中,加载了statusIcons布局。

Ubuntu环境代码同步

 下载遇到问题 提示无法下载 

更改下载源  

更改

# deb cdrom:[Ubuntu 18.04.6 LTS _Bionic Beaver_ - Release amd64 (20210915)]/ bionic main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic universe
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted

 需要配置ssh wind端和Ubuntu的都不一样

查看ssh  ls -al ~/.ssh

对应的目录真的不存在  是git-repo/repo

 此种情况可能是因为没有配置repo

 然后 

Ubuntu下面的终端和gitbrash差不多  都是下载东西都是下载到当前目录下  所以想要下载到想下载的目录下就需要用cd命令到想下载的目录下,或者是用命令指定下载的路径

解压可以用tar -xvf 文件名 -C 解压的路径     也可手动解压移动打破解压的目录下

根目录不是主目录 看隐藏文件可以ctrl+c  没有文件夹的时候创建一个也可以的

 错误

账号可以是名字@ip:端口号

也可能有的时候就是名字就可以

记得初始化这个概念

 这个问题 有可能是path的原因 也有可能是没安装对目录 也有可能是 命令没打对  

直接输入命令只是一个临时的环境变量

在用户主目录下  有很多类似.ssh .bashrc等设置

在winds查看cpu内核数量 可以在任务管理器 或者是设备管理器

 

 

  然后 虚拟机这里设置内核数量  编译代码时

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值