Android Activity 基础接口知识和常见问题

embedded/2024/11/25 0:15:02/

Activity 知识点及问题点

  • 接口
    • onMultiWindowModeChanged
    • onConfigurationChanged
  • 常见问题
    • Android解决点击桌面图标,就重新启动应用程序问题

接口

onMultiWindowModeChanged

  1. 定义

    • onMultiWindowModeChanged是Android中Activity类的一个回调方法。它会在活动(Activity)的多窗口模式发生改变时被调用。在Android 7.0(API级别24)及以上版本中,用户可以将应用程序置于多窗口模式,例如分屏模式或者画中画模式,当活动进入或退出这种多窗口模式时,onMultiWindowModeChanged方法就会被触发。
  2. 方法签名及参数含义

    • 方法签名为public void onMultiWindowModeChanged(boolean isInMultiWindowMode)。其中isInMultiWindowMode参数表示活动当前是否处于多窗口模式。如果isInMultiWindowModetrue,则表示活动刚刚进入多窗口模式;如果为false,则表示活动刚刚退出多窗口模式。
  3. 一般情况不需要特殊配置

    • 通常情况下,onMultiWindowModeChanged方法的触发不需要在AndroidManifest.xml文件中进行特殊配置来使它生效。只要你的应用运行在支持多窗口模式的Android设备(API级别24及以上)上,并且活动(Activity)进入或退出多窗口模式,这个方法就会被自动调用。
  4. 相关属性说明

    • 不过,在AndroidManifest.xml中有一些与多窗口模式相关的属性可以用于控制活动在多窗口环境下的行为。
    • android:resizeableActivity属性
      • 这个属性用于指定活动是否可以在多窗口模式下调整大小。其默认值根据应用的targetSdkVersion有所不同。如果targetSdkVersion大于等于24,默认值为true,这意味着活动默认可以被调整大小并且onMultiWindowModeChanged方法能够正常响应大小调整导致的模式变化;如果targetSdkVersion小于24,默认值为false,此时活动在多窗口模式下不会自动调整大小,并且可能影响onMultiWindowModeChanged方法的触发逻辑(因为活动可能不会正确进入多窗口模式下的调整大小状态)。
      • 示例:
<activityandroid:name=".MainActivity"android:resizeableActivity="true">
</activity>
  • android:supportsPictureInPicture属性
    • 当你希望活动支持画中画(Picture - in - Picture)这种特殊的多窗口模式时,可以设置这个属性为true。画中画模式是一种特殊的多窗口模式,主要用于视频播放等场景,使得视频可以在一个小窗口中继续播放,用户可以同时操作其他应用。如果你的活动支持画中画模式,当进入或退出画中画模式时,onMultiWindowModeChanged方法也会被触发。
    • 示例:
<activityandroid:name=".VideoPlayerActivity"android:supportsPictureInPicture="true">
</activity>
  1. 使用场景
    • 布局调整

      • 当活动进入多窗口模式时,可能需要重新调整布局。例如,在单窗口模式下,一个新闻阅读应用的文章内容区域可能占据了大部分屏幕空间,而相关的评论区域只占一小部分。当进入多窗口模式后,可以缩小文章内容区域,使评论区域也能更合理地显示,为用户提供更好的多任务体验。
    • 资源管理优化

      • 在多窗口模式下,应用的资源使用方式可能需要改变。比如,视频播放应用在单窗口模式下可以以较高的分辨率和帧率播放视频,以提供更好的视觉体验。但在多窗口模式下,为了节省系统资源并保证应用的流畅性,可以降低视频的分辨率或帧率。
    • 数据更新与同步

      • 对于一些需要实时更新数据的应用,如股票交易应用。在单窗口模式下,可能每秒更新一次数据。当进入多窗口模式后,为了避免过多的资源占用和可能的性能问题,可以适当降低数据更新频率。

onConfigurationChanged

https://yoshin.blog.csdn.net/article/details/143673878?fromshare=blogdetail&sharetype=blogdetail&sharerId=143673878&sharerefer=PC&sharesource=weixin_35691921&sharefrom=from_link

常见问题

Android解决点击桌面图标,就重新启动应用程序问题

场景:
按HOME键隐藏程序,但点击桌面图标,重新进入程序后,发现界面跟刚安装进入时是一样的,相当于程序重新初始化加载了。举个明显的例子:比如我的应用是定时器,有倒计时功能,我第一次打开程序时,已经启动了倒计时,当我按HOME键隐藏程序,让程序进入后台,之后我从桌面点击图标进入,发现倒计时重新开始了,这很明显是个bug。

原因分析:
原因很可能是intent携带的信息不一样导致的

原文链接:Android解决点击桌面图标,就重新启动应用程序问题
https://blog.csdn.net/qq15577969/article/details/107141504

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//这是为了应用程序安装完后直接打开,按home键退出后,再次打开程序出现的BUGif ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {//结束你的activityreturn;}
}

http://www.ppmy.cn/embedded/140243.html

相关文章

利用爬虫爬取网页小说

需求分析 安装requests包 pip install requests目录采集地址&#xff1a; h t t p s : / / w w w . 3 b q g . c c / b o o k / 60417 / https://www.3bqg.cc/book/60417/ https://www.3bqg.cc/book/60417/ 章节采集地址&#xff1a; h t t p s : / / w w w . 3 b q g . c …

【ArcGIS微课1000例】0132:从多个GIS视角认识与攀登珠穆朗玛峰

文章目录 1. Map Viewer中打开2. 场景查看器中打开3. ArcGIS中打开4. QGIS中打开5. Globalmapper中打开6. ArcGIS Earth中打开官网地址:https://www.arcgis.com/home/item.html?id=504a23373ab84536b7760c0add1e0c1c 1. Map Viewer中打开 以下展示不同底图样式的珠穆朗玛峰壮…

python语言基础

1. 基础语法 Q: Python 中的变量与数据类型有哪些&#xff1f; A: Python 支持多种数据类型&#xff0c;包括数字&#xff08;整数 int、浮点数 float、复数 complex&#xff09;、字符串 str、列表 list、元组 tuple、字典 dict 和集合 set。每种数据类型都有其特定的用途和…

云讷科技Kerloud无人飞车专利发布

云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书&#xff0c;作为科教社区第一款四旋翼飞车&#xff0c;这项技术结合了无人机和无人车的优势&#xff0c;提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下&#xff…

vue2 src_Todolist全局总线事件版本

main.js //引入Vue import Vue from "vue"; //引入App import App from ./App;//关闭Vue的生产提示 Vue.config.productionTip false;new Vue({el: #app,render: h > h(App),beforeCreate() {//事件总线Vue.prototype.$bus this;} });App.vue <template>…

【CSP CCF记录】201903-2第16次认证 二十四点

题目 样例1输入 10 934x3 54x5x5 7-9-98 5x6/5x4 3579 1x19-9 1x9-5/9 8/56x9 6x7-3x6 6x44/5 样例1输出 Yes No No Yes Yes No No No Yes Yes 样例1解释 思路 参考&#xff1a;CCF小白刷题之路---201903-2 二十四点&#xff08;C/C 100分&#xff09;_ccf认证小白-CSDN博客 …

Linux 的CENTOS7扩容3T空间

1、简化描述操作过程 查看新硬盘的盘符 转换硬盘分区方式 新硬盘创建分区表 格式化新硬盘分区表 将分区扩容到cl目录 将分区增加到具体的cl-home目录 2、详细配置过程 查看当前硬盘 fdisk -l 修改分区格式 parted /dev/sdb 转换硬盘分区方式 MBR分区方式转…

Docker 容器自动启动设置

在 Docker 中&#xff0c;可以通过设置容器的重启策略来实现容器的自动启动。这意味着&#xff0c;当 Docker 守护进程启动时&#xff0c;它可以自动启动特定的容器&#xff0c;无论是因为系统重启还是 Docker 服务本身的重启。 设置容器自动启动 要设置容器自动启动&#xf…