Android 多窗口 对于Activity生命周期的影响

探讨了Google的ExoPlayer在Android 7.0多窗口特性下的版本判断逻辑,解释了为何在不同版本的Activity生命周期中需要特殊处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不说硬话,不做软事

最近公司项目游戏中心需要对视频播放功能进行优化升级,Android端目前最火的播放器那必须是Google家的 ExoPlayer

PS: 哔哩哔哩的 ijkplayer 当年独领风骚,如今不在维护更新,So …


进入正题,在探索ExoPlayer的过程中,发现了有趣的现象。

在ExoPlayer的Demos中,播放相关的逻辑主要集中在PlayerActivity.java文件中,看到如下 诡异的一幕:

	...
	
 @Override
  public void onStart() {
    super.onStart();
    if (Util.SDK_INT > 23) {
      initializePlayer();
      if (playerView != null) {
        playerView.onResume();
      }
    }
  }

  @Override
  public void onResume() {
    super.onResume();
    if (Util.SDK_INT <= 23 || player == null) {
      initializePlayer();
      if (playerView != null) {
        playerView.onResume();
      }
    }
  }

  @Override
  public void onPause() {
    super.onPause();
    if (Util.SDK_INT <= 23) {
      if (playerView != null) {
        playerView.onPause();
      }
      releasePlayer();
    }
  }

  @Override
  public void onStop() {
    super.onStop();
    if (Util.SDK_INT > 23) {
      if (playerView != null) {
        playerView.onPause();
      }
      releasePlayer();
    }
  }
	...

WTF?在Activity的生命周期中居然还需要版本判断


正如你所见:

我长这么大没见过这么嚣张的人!


我坚信这绝对不是Google开发人员的『恶作剧』,本着真相只有一个的信念,我开始着手调查此事。

出了这样的事情,官方文档:Activity-lifecycle 自然是需要配合调查的。

还没用刑她就全招了…

Android 7.0( 24 ) 引入的多窗口支持特性引起Activity生命周期的细微变化。

在这里插入图片描述

而在多窗口支持中也对该种模式下的生命周期做出诠释:

在这里插入图片描述


我想,是时候考虑多窗口支持的事情啦…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值