SystemUI之插件Plugin

这篇具有很好参考价值的文章主要介绍了SystemUI之插件Plugin。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为何要用插件plugin

SystemUI模块非常多,结构自然也就非常复杂,而且SystemUI是一个常驻的进程,不能随意做修改升级,如果修改不到位,很可能会存在bug,这是修复就非常难。另外一个原因是可以方便客户客制化,如需要改变状态栏的背景色、显示时钟的风格、锁屏壁纸等等都可以直接通过插件的方式来修改,不需要对SystemUI重新定制。所以,使用插件极大地方便了客户,又维持了系统的稳定。

二、插件代码结构,主要由plugin、plugin_core、share这三部分模块构成

1、plugin:ExamplePlugin是提供参考的例子,src里面主要是以接口的形式提供支持,并且包括FalsingPlugin、VolumePlugin、NotificationPlugin、QSPlugin等插件实例。

SystemUI之插件Plugin,android,java,c++,linux,android studio

2、plugin_core:插件的核心,主要是要实现一些接口

SystemUI之插件Plugin,android,java,c++,linux,android studio

3、share:插件的管理类、版本信息等

SystemUI之插件Plugin,android,java,c++,linux,android studio

这些插件的接口信息等都是通过dragger注入的方式来实现的,如不理解dragger注入,可先学习dragger2的注入原理

三、插件的加载流程

1、SystemUI的Application上通过读取配置信息启动每个SystemUI的子服务,同时创建PluginManager的实现实例,添加监听事件文章来源地址https://www.toymoban.com/news/detail-841933.html

frameworks\base\packages\SystemUI\src\com\android\systemui\SystemUIApplication.java
private void startServicesIfNeeded(String[] services) {
   ......................
    Dependency.get(PluginManager.class).addPluginListener(
            new PluginListener<OverlayPlugin>() {
                private ArraySet<OverlayPlugin> mOverlays = new ArraySet<>();

                @Override
                public void onPluginConnected(OverlayPlugin plugin, Context pluginContext) {
                    mainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            StatusBar statusBar = getComponent(StatusBar.class);
                            if (statusBar != null) {
                                plugin.setup(statusBar.getStatusBarWindow(),
                                        statusBar.getNavigationBarView(), new Callback(plugin));
                            }
                        }
                    });
                }

                @Override
                public void onPluginDisconnected(OverlayPlugin plugin) {
                    mainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            mOverlays.remove(plugin);
                            Dependency.get(StatusBarWindowController.class).setForcePluginOpen(
                                    mOverlays.size() != 0);
                        }
                    });
                }

                class Callback implements OverlayPlugin.Callback {
                    private final OverlayPlugin mPlugin;

                    Callback(OverlayPlugin plugin) {
                        mPlugin = plugin;
                    }

                    @Override
                    public void onHoldStatusBarOpenChange() {
                        if (mPlugin.holdStatusBarOpen()) {
                            mOverlays.add(mPlugin);
                        } else {
                            mOverlays.remove(mPlugin);
                        }
                        mainHandler.post(new Runnable() {
               

到了这里,关于SystemUI之插件Plugin的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Gradle Plugin、Gradle、Android Studio版本关系

    参考链接 插件版本 所需的最低 Gradle 版本 8.3 8.4 8.2 8.2 8.1 8.0 8.0 8.0 7.4 7.5 7.3 7.4 7.2 7.3.3 7.1 7.2 7.0 7.0 4.2.0+ 6.7.1 4.1.0+ 6.5+ 4.0.0+ 6.1.1+ 3.6.0 - 3.6.4 5.6.4+ 3.5.0 - 3.5.4 5.4.1+ 3.4.0 - 3.4.3 5.1.1+ 3.3.0 - 3.3.3 4.10.1+ 3.2.0 - 3.2.1 4.6+ 3.1.0+ 4.4+ 3.0.0+ 4.1+ 2.3.0+ 3.3+ 2.1.3 - 2.2.3 2.14.1 - 3.5 2.0.0 - 2.1.2 2.10 - 2.1

    2024年02月20日
    浏览(57)
  • Android Studio升级Gradle Plugin升级导致项目运行失败问题

    升级Android Studio 旧项目无法运行,奇奇怪怪什么错误都有 例如: 又例如: 初步排查判断是旧项目Gradle版本问题导致。因为最近创建的项目,升级AS之后无影响,只有旧项目跑不起来。 查阅资料发现,随着AS gradle插件版本的升级,项目中gradle plugin版本、gradle版本、jdk版本等均

    2024年02月01日
    浏览(60)
  • Android studio报错:Plugin [id: ‘com.android.application‘, version: ‘7.2.0‘

    之前我是在笔记本电脑上安装的Android studio,是能使用的好好的,但是这次在新台式电脑上安装Android studio之后新建project发现报错:Plugin [id: \\\'com.android.application\\\', version: \\\'7.2.0\\\', apply: false] was not found in any of the following sources 1、试过将Android studio文件Gradle Script下面的gradle-wrapper.

    2024年02月17日
    浏览(45)
  • Android studio 报错 Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false]

    之前的项目可以运行,过一阵再次打开发现报错如下。但是新建Android studio 项目没有问题可以运行。 很久没有查到原因缺的version: \\\'8.1.0\\\'之前已经下载过也不知道为啥还要提示下载 然后就是下载失败 问题后来问题解决 将上边路径修改如下 点击🆗 等待下载完成问题解决

    2024年02月03日
    浏览(59)
  • 开发Android App,令人头疼的Android Studio、Gradle、JDK、Andrroid Gradle Plugin版本问题

    开发Android App,各种报错。真是炼狱般的体验,一弄弄一天,一抬头半夜两点半,时间废了还没成果,真是服了。 记录下问题,便于后期查阅。 看到网友搞笑评论:Gradle 在不做人方面,一直很稳定 Android Studio 版本:Flamingo | 2022.2.1 Patch 1 默认支持的JDK: 默认自带的 JDK 17 创建

    2024年01月25日
    浏览(61)
  • 解决Android Studio中Plugin version和Gradle version不匹配的问题

    《红猪》     前言 导入一个百度云的Demo而已,居然遇到这么多问题,纠结了很久,也查了很多资料,弯弯绕绕了好多路数才解决这个问题,在此记录一下,也分享出来给遇到同样问题的童鞋们。 版本信息 Android Studio版本3.4.1 问题发生及解决方式 导入百度云文字识别Demo,提

    2024年02月10日
    浏览(49)
  • Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法

    新建项目下Gradle sync报错:Plugin [id \\\'com.android.application\\\' version \\\'7.1.2\\\' apply false] was not found in any of the following sources: 相信你在网上各种搜索答案,尝试了各种设置Http proxy,也配置了很多仓库,还是不能解决问题。 解决过程 在问题排除过程中,根据网上的博客猜测是版本Gradle和

    2024年04月15日
    浏览(95)
  • Android studio 运行警告 We recommend using a newer Android Gradle plugin to use compileSdk = 33

    刚开始运行Android studio就出现这条警告,虽然对项目的运行没有什么影响但是作为一个程序员怎么可能让bug出现在自己的眼前 这句警告的意思是 建议使用一个新的Android Gradle插件去使用compileSdk = 33 这个 Android Gradle 插件 (7.1.2)已经通过了compileSdk = 32的测试 可以通过添加 androi

    2024年02月11日
    浏览(44)
  • android studio引入OpenCV报错Plugin [id: ‘com.android.application‘, ...]was not found in any of the ...

    ​​​​​​​​​​​​​https://blog.csdn.net/qq_41104439/article/details/132479459 https://blog.csdn.net/qq_41104439/article/details/132479459         按照上面的教程引入opencv模块,但是build就报错 Plugin [id: \\\'com.android.application\\\', version: \\\'8.1.1\\\', apply: false] was not found in any of the following sources        

    2024年02月04日
    浏览(55)
  • This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open 问题解决方法

            在Android studio打开一个新的Android项目发现弹出以下的错误提示: 以上意思是当前的IntelliJ IDEA 或者Android studio所支持的Android插件不能打开该项目,请更新到2021.1.1版本或者更新的版本,故我们将相关的Android插件检查更新一下即可。 步骤1:Help--Check for Updates 步骤2:步

    2024年02月14日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包