关闭

前台Activity旋转,后台Activity被销毁

标签: Activity
421人阅读 评论(0) 收藏 举报
分类:

上周四要发版,结果非常之尴尬,因为我负责的部分,导致到晚上12点仍然无法通过测试验收。
非常非常尴尬……
我负责爱奇艺头条的视频播放部分,一个场景是,首页Feed流A页面支持视频自动播放,点击正在播放的视频,跳转到B页面,B页面使用同一个视频播放器完成续播。

问题复现:在B页面点击全屏按钮,偶现视频停止播放。

追查:点击全屏,播放器内部要调整TextureView大小,这时发现player变成了null, surface也变成了null。置空操作,我是在播放器的release方法里做的。再调试,发现B页面转屏时,A页面的onDestroy被调用,我在A页面的onDestroy方法里做了销毁播放器的操作。

what the hell?
为什么B页面转全屏,后台的A页面被销毁!
怀疑是资源回收导致的,但是出现问题的几次查看资源消耗情况,内存CPU占用都不高。

再调试发现,A页面在onDestroy被调用后,onCreate紧接着被调用,这个符合转屏时Activity的销毁重建路径。

But,what the hell? 我是对B页面转屏,为什么A页面也被调用了转屏?

/**
     * Change the desired orientation of this activity.  If the activity
     * is currently in the foreground or otherwise impacting the screen
     * orientation, the screen will immediately be changed (possibly causing
     * the activity to be restarted). Otherwise, this will be used the next
     * time the activity is visible.
     *
     * @param requestedOrientation An orientation constant as used in
     * {@link ActivityInfo#screenOrientation ActivityInfo.screenOrientation}.
     */
    public void setRequestedOrientation(@ActivityInfo.ScreenOrientation int requestedOrientation)

注释里强调了foreground, 想起了一件事,B页面支持滑动关闭,而滑动关闭是在滑动时把Activity变成透明属性,是不是这个影响了转屏操作?

   @Override
            public void onEdgeTouch(int edgeFlag) {
                InputMethodManager imm = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm.isActive() && mActivity.getCurrentFocus()!=null) {
                    imm.hideSoftInputFromWindow(mActivity.getCurrentFocus().getWindowToken(), 0);
                }
                Utils.convertActivityToTranslucent(mActivity);
            }

果然如此……
在B页面触发了onEdgeTouch, 导致Activity变成透明的。再全屏操作时,导致后面的A页面也执行了转屏操作。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android开发系统主动销毁activity时问题

当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。
  • zxwd2015
  • zxwd2015
  • 2016-06-08 10:08
  • 2521

程序后台Activity被回收后再次启动fragment失效问题

出现的问题 最近在做项目的时候,遇到了fragment切换失效的问题,也就是fragment重叠的问题。当我点击fragment对应tab键时,通过hide隐藏其他三个fragment,通过show...
  • xbw12138
  • xbw12138
  • 2016-07-01 23:45
  • 11981

Activity之间的跳转及销毁所有Activity的正确姿势

一、结束当前Activity的方法有4种://方法1 finish();//方法2 System.exit(0);//方法3 android.os.Process.killProcess(androi...
  • xkc_0706
  • xkc_0706
  • 2015-12-11 19:25
  • 4512

Android开发,后台service与前台activity通信

android开发,在处理耗时操作的时候,不能再UI(主线程)中处理,有些人为了方便,直接在activity中new 一个新的线程来处理耗时任务,虽然可以达到目的,但是线程不好控制,使用不当可能会导致...
  • u011326269
  • u011326269
  • 2016-03-15 14:56
  • 1173

Android-后台运行的Activity回到前台(onNewIntent()会替代onCreat()方法)

在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单 但是当您需要让后台运行的Activity回到前台并传递一些数据可能...
  • CL18652469346
  • CL18652469346
  • 2016-12-15 17:15
  • 1555

Android——处理设备旋转Activity销毁时临时数据丢失的问题

一,在设备的旋转的时候,发生了什么?           设备旋转时候,当前的activity实例会被系统销毁,然后创建一个新的Activity实例。接下来我们通过检测Activity的生命周期来观察...
  • lhc2207221755
  • lhc2207221755
  • 2015-10-17 11:30
  • 1975

android打开activity动画(上下左右旋转等方式)

  • 2014-03-18 17:26
  • 115KB
  • 下载

activity跳转切换 拖拽旋转动画工具类

  • 2016-07-13 15:09
  • 9KB
  • 下载

自定义扇形进度条、异步加载网络图片、Activity疯狂旋转动画

  • 2016-04-19 03:49
  • 2.13MB
  • 下载

设备旋转与Activity生命周期

  • 2015-08-28 21:54
  • 938KB
  • 下载
    个人资料
    • 访问:197687次
    • 积分:1915
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:18篇
    • 译文:1篇
    • 评论:50条
    文章分类
    最新评论