aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?

devtools/2024/11/14 4:41:53/

背景

近期各个大厂已经开始准备aosp15的系统rom适配工作了,应该是想2025年初开发发布相关的新机型,所以慢慢的我们也要开始适应aosp15版本的相关问题的修改和研究哈。

近期就有相关学员朋友在做android15相关的dialog开发时候,发现了一个严重的必现闪屏类bug。具体现象如下图所示:
在这里插入图片描述

明显可以看出点击dialog上按钮会正常跳转到第二个Activity,但是第二个Activity返回到第一个Activity时候就出现了必须的闪白屏的现象。

刚好千里马的学员朋友们非常期望有这样的一些窗口疑难类的bug,也刚好可以作为wms专题学习后的一些实战扩展项目给大家进行企业级别的实战哈。
闪屏问题的复现

复现环境要求:

aosp15 android-15.0.0_r3 估计其他版本也一样复现 复现demo编写:

1、编写定义一个DialogActivity,MainActivity AndroidManifest定义如下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"tools:targetApi="31"><activityandroid:name=".DialogActivity"android:exported="false"android:theme="@style/Theme.AppCompat.Dialog"></activity><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

主要就是对 android:theme="@style/Theme.AppCompat.Dialog即可以代表这个Activity是Dialog风格的,MainActivity主要是负责跳转到DialogActivity,然后DialogActivity自己再进行跳转

2、要两个DialogActivity跳转切换

package com.example.myapplication;import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;public class DialogActivity extends AppCompatActivity {private TextView tvMessage;private Button buttonOpenAnotherDialog;private boolean isFirstTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE); // 隱藏標題欄setContentView(R.layout.activity_dialog);// 获取传递的布尔值,默认为trueisFirstTime = getIntent().getBooleanExtra("isFirstTime", true);initView();buttonOpenAnotherDialog.setOnClickListener(v -> {Intent intent = new Intent(this, DialogActivity.class);intent.putExtra("isFirstTime", false); // 传递false表示不是第一次startActivity(intent);});// 设置TextView的内容if (isFirstTime) {tvMessage.setText("第一次");} else {tvMessage.setText("第二次");buttonOpenAnotherDialog.setVisibility(Button.INVISIBLE); // 隐藏按钮}}private void initView() {tvMessage = (TextView) findViewById(R.id.tv_message);buttonOpenAnotherDialog = findViewById(R.id.button_open_another_dialog);}
}

activity_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"android:background="@android:color/white"><TextViewandroid:id="@+id/tv_message"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18sp"android:textColor="@color/black"android:layout_marginBottom="16dp"/><Buttonandroid:id="@+id/button_open_another_dialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Open Another Dialog"/>
</LinearLayout>

3、点击跳转复现问题 复现非常简单,MainActivity点击弹出DialogActivity后,再点击DialogActivity弹出第二个DialogActivity,再返回就必现

在这里插入图片描述

更多framework干货内容,aosp最新实战干货,请关注下面“千里马学框架”


http://www.ppmy.cn/devtools/133378.html

相关文章

初始 html

html 文件结构 html 标签是整个 html 文件的根标签(最顶层标签) head 标签中写页面的属性. body 标签中写的是页面上显示的内容 title 标签中写的是页面的标题 <html><head><title>这是一个标题</title></head><body></body> <…

C++ 面试问题集合

文章目录 设计模式单例 排序算法查找算法二分查找 设计模式 单例 #include <iostream> #include <string> #include <memory> #include <mutex> #include <thread>using namespace std;class SingleTon{ protected://外部不可直接操作SingleTo…

使用vscode 连接linux进行开发

1. 在Vscode中安装扩展功能remote ssh 2. 打开命令窗口 3. 在弹出的命令窗口输入ssh&#xff0c;并从弹出的提示中选择 Add New SSH Host 4. 在弹出的输入窗口中输入类似下面形式的 连接地址&#xff1a; 5. 输入回车后出现下面的对话框&#xff0c;这个对话框是说你要用哪个…

云计算基础知识

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;黑客云技术基础之&#xff08;网恋避险&#xff09;_哔哩哔哩_bilibili 目录 一、什么是云 二、云架构介绍 1. 技术基础的重要性 2. 技术演变…

每天10个vue面试题(八)

1、Vue如何监听页面url中hash变化&#xff1f; 监听 $route 的变化&#xff1a;在Vue中&#xff0c;你可以使用watch属性来监听$route的变化。当路由发生变化时&#xff0c;会执行相应的处理函数。使用 window.location.hash&#xff1a;直接读取window.location.hash的值。这…

MATLAB和Python及R潜变量模型和降维

MATLAB片段 在 MATLAB 中&#xff0c;潜变量模型 (Latent Variable Models, LVMs) 和降维技术被广泛用于复杂数据的分析&#xff0c;例如基因表达数据或其他高维数据集。这些工具有助于揭示隐藏的结构并检测扰动&#xff08;例如基因敲除或化学处理&#xff09;在数据中的影响…

基于SSM(Spring + Spring MVC + MyBatis)框架的药房管理系统

基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架的药房管理系统 项目概述 功能需求 用户管理&#xff1a;管理员可以添加、删除、修改和查询用户信息。药品管理&#xff1a;支持对药品信息的增删改查操作&#xff0c;包括药品名称、价格、库存量等。供应商…

Bash Shell - 获取日期、时间

1. 使用date获取日期 以下代码将date的执行结果存储在today变量中。date 是获取日期和时间的命令。 选择使用 quotes()或$ #!/bin/bashtodaydate echo $todaytoday$(date) echo $today 2. 使用 Format 输出所需日期和时间 date FORMAT 2.1 "MM-DD-YY" 形式输出…