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

Activity 知识点及问题点

接口

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方法的触发逻辑(因为活动可能不会正确进入多窗口模式下的调整大小状态)。
      • 示例:
xml 复制代码
<activity
    android:name=".MainActivity"
    android:resizeableActivity="true">
</activity>
  • android:supportsPictureInPicture属性
    • 当你希望活动支持画中画(Picture - in - Picture)这种特殊的多窗口模式时,可以设置这个属性为true。画中画模式是一种特殊的多窗口模式,主要用于视频播放等场景,使得视频可以在一个小窗口中继续播放,用户可以同时操作其他应用。如果你的活动支持画中画模式,当进入或退出画中画模式时,onMultiWindowModeChanged方法也会被触发。
    • 示例:
xml 复制代码
<activity
    android: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

java 复制代码
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //这是为了应用程序安装完后直接打开,按home键退出后,再次打开程序出现的BUG
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            //结束你的activity
            return;
        }
}
相关推荐
TeleostNaCl32 分钟前
如何安装 Google 通用的驱动以便使用 ADB 和 Fastboot 调试(Bootloader)设备
android·经验分享·adb·android studio·android-studio·android runtime
fatiaozhang95271 小时前
中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
android·网络·电脑·电视盒子·刷机固件·机顶盒刷机
2501_915918412 小时前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
lichong9512 小时前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里
android·vue.js·iphone
Android出海2 小时前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
一只修仙的猿2 小时前
毕业三年后,我离职了
android·面试
编程乐学3 小时前
安卓非原创--基于Android Studio 实现的新闻App
android·ide·android studio·移动端开发·安卓大作业·新闻app
雅雅姐4 小时前
Android14 init.rc中on boot阶段操作4
android
fatiaozhang95275 小时前
中国移动中兴云电脑W132D-RK3528-2+32G-刷机固件包(非原机制作)
android·xml·电脑·电视盒子·刷机固件·机顶盒刷机
Android出海7 小时前
Google Play账户与App突遭封禁?紧急应对与快速重构上架策略
android·网络·重构·新媒体运营·产品运营·内容运营